Cod sursa(job #517420)

Utilizator S7012MYPetru Trimbitas S7012MY Data 28 decembrie 2010 18:25:59
Problema Elimin Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#define DN 700
using namespace std;

int n,m,r,c,a[DN][DN],v[DN],s[20],sm,sum;

void gen(int k, int t) {
    if(k==r+1) {
        for(int i=1; i<=n; ++i) for(int j=1; j<=m; ++j) v[j]+=a[i][j]*s[i];
        sort(v+1,v+m+1);
        for(int i=m; i>c;--i) sum+=v[i];
        if(sum>sm) sm=sum;
        sum=0;
        fill(v+1, v+m+1,0);
        return;
    }
    for(int i=t+1;i<=n-r+k;++i) {
        s[i]=0;
        gen(k+1,i);
        s[i]=1;
    }
}

int main()
{
    ifstream f("elimin.in");
    ofstream g("elimin.out");
    f>>n>>m>>r>>c;
    if(n<=m) for(int i=1; i<=n; ++i){
         for(int j=1; j<=m; ++j) f>>a[i][j];
         s[i]=1;
    }
    else {
        for(int i=1; i<=n; ++i) {
            for(int j=1; j<=m; ++j) f>>a[j][i];
            s[i]=1;
        }
        swap(n,m); swap(r,c);
    }
    gen(1,0);
    g<<sm;
    return 0;
}