Cod sursa(job #1333476)

Utilizator wGEORGEWGeorge Cioti wGEORGEW Data 3 februarie 2015 11:01:57
Problema Elimin Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.34 kb
#include<fstream>
#include<algorithm>
#include<cstring>
#define LL long long
using namespace std;
ifstream cin("elimin.in");
ofstream cout("elimin.out");
    int M,N,R,C;
    int A[400][20];
    LL suma_matrice=0,suma_linii,suma_coloane;
    LL k,nr_col,s_linie[400],sol=-1000000,i,j,nr;
int main() {
    cin>>M>>N>>R>>C;
    if(M>N){
    for(i=1;i<=M;i++)
        for(j=1;j<=N;j++)
            cin>>A[i][j];
    }
    else{
    for(i=1;i<=M;i++)
        for(j=1;j<=N;j++)
            cin>>A[j][i];
    swap(N,M);
    swap(R,C);
    }
    for(i=1;i<=M;i++)
        for(j=1;j<=N;j++)
            suma_matrice+=A[i][j];
    nr=(1<<N);
for(k=0;k<nr;k++){
        nr_col=0;
        for(i=0;i<N;i++)
            if(k&(1<<i)) nr_col++;
        if(nr_col==C){
            suma_linii=0;
            suma_coloane=0;
            for(i=1;i<=M;i++)
                s_linie[i]=0;
            for(i=1;i<=M;i++)
                for(j=1;j<=N;j++)
                    if(k&(1<<(j-1)))
                        suma_coloane+=A[i][j];
                    else s_linie[i]+=A[i][j];
                    sort(s_linie+1,s_linie+M+1);
        for(i=1;i<=R;i++)
            suma_linii+=s_linie[i];
        if(suma_matrice-suma_coloane-suma_linii>sol)
                sol=suma_matrice-suma_coloane-suma_linii;
        }
}
cout<<sol;
return 0;
}