Cod sursa(job #1014795)

Utilizator costel93FMI - Dumea Eduard Constantin costel93 Data 23 octombrie 2013 12:48:42
Problema Elimin Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <fstream>
#include <algorithm>
#include <string.h>

using namespace std;

ifstream f("elimin.in");
ofstream g("elimin.out");
 
int N, M, R, C, a[7000][17], st[7000], viz[7000], S, Slin[7000], sum[7000];
 
void citire()
{
    f>>M>>N>>R>>C;
	
    if(M>=N)
    {
        for(int i=1;i<=M;++i)
            for(int j=1;j<=N;++j)
			{
				f>>a[i][j];
				Slin[i]+=a[i][j];
			}
    }
    else
    {
        for(int i=1;i<=M;++i)
            for(int j=1;j<=N;++j)
			{
				f>>a[j][i];
				Slin[j]+=a[j][i];
			}
			
        swap(M,N);
        swap(R,C);
    }
}
 
void suma(int st[])
{
	int sol=0;
	
    for(int i=1;i<=M;++i)
    {
        sum[i]=Slin[i];
		
        for( int j=1; j <= C; ++j)
			sum[i]-= a[i][st[j]];
    }
    sort(sum+1,sum+1+M);
 
    for(int i=R+1;i<=M;++i)
		sol += sum[i];
    if(sol>S)
		S=sol;
 
}
void bkt(int k)
{
    if(k==C+1)
	{
		suma(st);
		return;
	}
    for(int i = st[k-1]+1; i <= N; ++i)
	{
		st[k]=i;
		bkt(k+1);
	}
}

int main()
{
    citire();
    bkt(1);
	
    g<<S;
    
	f.close();
	g.close();
    
	return 0;
}