Cod sursa(job #2080618)

Utilizator TeoMiliMilitaru Teodora TeoMili Data 3 decembrie 2017 12:58:11
Problema Elimin Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("elimin.in");
ofstream cout("elimin.out");
int i,j,sl[7295],a[7295][522],St,m,n,c,r,x[522],v[7295],Max;
void back(int k){
    int i,j;
    for(i=x[k-1]+1;i<=m;i++){
        x[k]=i;
        //sterg fiecare element al coloanei i din suma fiecarei linii si din suma totala
        for(j=1;j<=n;j++){
            sl[j]-=a[j][i];
            St-=a[j][i];
        }
        if(k==c){
            for(j=1;j<=n;j++)
                v[j]=sl[j];
            sort(v+1,v+n+1);
            int sum=St;
            for(j=1;j<=r;j++)
                sum=sum-v[j];
             Max=max(Max,sum);
        }
        else
            back(k+1);
        for(j=1;j<=n;j++){
            sl[j]+=a[j][i];
            St+=a[j][i];
    }

}
}
int main()
{
    cin>>n>>m>>r>>c;
    if(n<m){
        for(i=1;i<=n;i++)
            for(j=1;j<=m;j++){
                cin>>a[j][i];
                sl[j]=sl[j]+a[j][i];
            }
        swap(n,m);
        swap(r,c);
    }
    else
        for(i=1;i<=n;i++)
            for(j=1;j<=m;j++){
                cin>>a[i][j];
                sl[i]=sl[i]+a[i][j];
            }
    for(i=1;i<=n;i++)
        St=St+sl[i];
    back(1);
    cout<<Max;


    return 0;
}