Cod sursa(job #2017080)

Utilizator mjmilan11Mujdar Milan mjmilan11 Data 31 august 2017 11:08:48
Problema Elimin Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <fstream>
#include<algorithm>
using namespace std;

ifstream fin("elimin.in");
ofstream fout("elimin.out");

int a[16][7295];
int l[7295];
int v[7295];
int n,m,r,c;
int maxim;
int solve(){
    int s=0,j,i;
    for(j=1;j<=m;j++){
        v[j]=a[0][j];
        for(i=1;i<=r;i++)
            v[j]-=a[l[i]][j];
        s+=v[j];
    }
    sort(v+1,v+m+1);
    for(j=1;j<=c;j++)
        s-=v[j];
    return s;
}
void bkt(int k){
    if(k==r+1){
        int s=solve();
        if(s>maxim)
            maxim=s;
    }else{
        int i;
        for(i=l[k-1]+1;i<=n;i++){
            l[k]=i;
            bkt(k+1);
        }
    }
}
int main(){
    int i,j,aux;
    fin >> n >> m >> r >> c;
    if(n<=m)
        for(i=1;i<=n;i++)
            for(j=1;j<=m;j++)
                fin >> a[i][j];
    else{
        aux=n;
        n=m;
        m=aux;
        aux=r;
        r=c;
        c=aux;
        for(i=1;i<=m;i++)
            for(j=1;j<=n;j++)
                fin >> a[i][j];
    }
    for(j=1;j<=m;j++)
        for(i=1;i<=n;i++)
            a[0][j]+=a[i][j];
    bkt(1);
    fout << maxim;
    return 0;
}