Cod sursa(job #1312227)

Utilizator ovidiuz98Zamfir Ovidiu ovidiuz98 Data 8 ianuarie 2015 23:50:30
Problema Elimin Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <fstream>
#include <cstring>
#include <algorithm>
#define DIM 1000
using namespace std;

ifstream fin("elimin.in");
ofstream fout("elimin.out");
int D[DIM][20],N,M,R,C,s[DIM],maxim;
bool b[30];
int main(){
    fin>>N>>M>>R>>C;
    if(M>N){
        for(int i=0;i<N;i++)
            for(int j=0;j<M;j++)
                fin>>D[j][i];
        swap(N,M);
        swap(R,C);
    }
    for(int i=0;i<N;i++)
        for(int j=0;j<M;j++)
            fin>>D[i][j];

    for(int k=0;k<(1<<M);k++){
        int nr=0,mask=k;
        for(int j=0;j<M;j++)
            if(k&(1<<j))
                nr++;
        if(nr==C)
            {
                for(int i=0;i<N;i++){
                        s[i]=0;
                    for(int j=0;j<M;j++)
                        if(!(k&(1<<j)))
                            s[i]+=D[i][j];
                }
                sort(s,s+N);
                int sum=0;
                for(int j=R;j<N;j++)
                    sum+=s[j];
                if(sum>maxim)
                    maxim=sum;
            }
    }
    fout<<maxim;
    fin.close();fout.close();
    return 0;
}