Cod sursa(job #2081856)

Utilizator Vlad_FuioreaVlad - Stefan Fuiorea Vlad_Fuiorea Data 5 decembrie 2017 11:29:21
Problema Elimin Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("elimin.in");
ofstream cout("elimin.out");
int M,N,R,C,a[7301][21],i,j,S,St,xl[7301],sl[7301],x[21],Max=0;
void Comb(int k){
    int i;
    for(int j=x[k-1]+1;j<=N;j++)
    {
        x[k]=j;
        for(i=1;i<=M;i++)
        {
            xl[i]-=a[i][j];
            St-=a[i][j];
        }
        if(k==C){
            for(i=1;i<=M;i++)
                sl[i]=xl[i];
            int sum=St;
            sort(sl+1,sl+M+1);
            for(i=1;i<=R;i++)
                sum-=sl[i];
            Max=max(Max,sum);
        }
        else
            Comb(k+1);
        for(i=1;i<=M;i++)
        {
            xl[i]+=a[i][j];
            St+=a[i][j];
        }
    }
}
void tipar(){

}
int main()
{   St=0;
    cin>>M>>N>>R>>C;
    if(M<N)
        for(i=1;i<=M;i++)
            for(j=1;j<=N;j++){
                cin>>a[i][j];
                xl[i]+=a[i][j];
                St+=a[i][j];
            }

    else{
        for(i=1;i<=M;i++)
            for(j=1;j<=N;j++){
                cin>>a[j][i];
                xl[j]+=a[j][i];
                St+=a[j][i];
            }
        swap(R,C);
        swap(N,M);
    }
    Comb(1);
    cout<<Max;
    return 0;
}