Cod sursa(job #836535)

Utilizator Theorytheo .c Theory Data 16 decembrie 2012 13:23:02
Problema Elimin Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include<fstream>
#include<algorithm>
using namespace std;

ifstream fin("elimin.in");
ofstream fout("elimin.out");

int N, M, R, C;

int v[1000][100],sum[1000], a[106];
int lin[1006];
int smax = 0 ;
void solve(){
    for(int i = 1; i <= N; i++)
        lin[i] = sum[i];
    for(int i = 1; i <= C; i++)
        for(int j = 1; j <= N; j++)
        {
            lin[j] -= v[j][a[i]];
        }
    sort(lin + 1, lin + 1 + N);
    int S= 0 ;
    for(int i = R  + 1; i <= N; i++)
        S += lin[i];
    smax = max (S,smax);

}
void bkt(int l)
{
    if(l <= C)
    {
        for(int i = a[l - 1] + 1; i <= M - l + C; i++ )
        {
            a[l] = i;
            bkt(l + 1);

        }
    }
    else solve();

}
int main(){
    fin >>N>>M>>R>>C;

    if(N < M){
        for(int i = 1; i <= N; i++)
        {
            for(int j = 1; j <= M; j++)
                fin >> v[j][i];
        }
        swap(N,M);
        swap(R,C);

    }
    else
    {
        for(int i = 1; i <= N; i++)
            for(int j = 1; j <=M; j++)
                fin >> v[i][j];

    }
    for(int i = 1; i <= N; i++)
        for(int j = 1; j <= M; j++)
            sum[i] += v[i][j];
    bkt(1);
    fout << smax <<'\n';

    fin.close();
    return 0;

}