Cod sursa(job #2081855)

Utilizator PeraPera Alexandru Pera Data 5 decembrie 2017 11:29:15
Problema Elimin Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("elimin.in");
ofstream fout("elimin.out");
int a[7301][21],i,j,Xl[7301],Sl[7301],St,X[21],r,c,n,m,Max,S;
void comb(int k){
     int i;
     for(i=X[k-1]+1;i<=m;i++)
     {   X[k]=i;
         for(j=1;j<=n;j++){
             Xl[j]-=a[j][i];
             St-=a[j][i];
         }
         if(k==c){
            for(j=1;j<=n;j++)
                Sl[j]=Xl[j];
           int sum=St;
            sort(Sl+1,Sl+n+1);
            for(j=1;j<=r;j++)
                sum-=Sl[j];
            Max=max(Max,sum);
            }
         else
            comb(k+1);

        for(j=1;j<=n;j++){
             Xl[j]+=a[j][i];
             St+=a[j][i];
         }

     }


     }






int main()
{fin>>n>>m>>r>>c;
if(n>=m)
 for(i=1;i<=n;i++){
     S=0;
     for(j=1;j<=m;j++){
         fin>>a[i][j];
         S+=a[i][j];
     }
     Xl[i]=S;
     St+=Xl[i];
 }
else{

    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++){
            fin>>a[j][i];
            Xl[j]+=a[j][i];
            St+=a[j][i];
        }

    swap(n,m);
    swap(r,c);
    }


comb(1);
fout<<Max;
    return 0;
}