Cod sursa(job #1542181)

Utilizator SilviuIIon Silviu SilviuI Data 5 decembrie 2015 09:01:03
Problema Elimin Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <stdio.h>
#include <algorithm>
using namespace std;
int n,m,i,j,t[7300][20],x,y,maxx;
void back()
{
    int i,j;
    for (i=0;i<(1<<m);i++) {
        int nrcol=0;
        for (j=0;j<m;j++)
            if ((i>>j)&1==1) nrcol++;
        if (nrcol==y) {
            int ii,jj,b,sumlin=0,lin[7300]={0};
            for (ii=1;ii<=n;ii++)
                for (jj=1;jj<=m;jj++) {
                    if (((i>>(jj-1))&1)!=1) lin[ii]+=t[ii][jj],sumlin+=t[ii][jj]; else
                        b=0;
            }
            sort(lin+1,lin+n+1); int li=0;
            for (ii=1;ii<=x;ii++) li+=lin[ii];
            if (sumlin-li>maxx) maxx=sumlin-li;
        }
    }
}
int main() {
freopen("elimin.in","r",stdin);
freopen("elimin.out","w",stdout);
scanf("%d %d %d %d",&n,&m,&x,&y);
if (n>m) {
    for (i=1;i<=n;i++)
        for (j=1;j<=m;j++)
        scanf("%d",&t[i][j]);
} else {
    for (i=1;i<=n;i++)
        for (j=1;j<=m;j++)
        scanf("%d",&t[j][i]);
    swap(n,m); swap(x,y);
}
back();
printf("%d",maxx);
return 0;
}