Pagini recente » Cod sursa (job #2477532) | Cod sursa (job #885288) | Cod sursa (job #854643) | Rating liliana arici (lilipop) | Cod sursa (job #1065898)
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int a[16][7300], st[20], v[7300];
int main()
{
FILE *fin, *fout;
fin=fopen("elimin.in", "r");
fout=fopen("elimin.out", "w");
int n, m, c, r, i, j, k, s, maxim=0, x, nr, S=0, aux;
fscanf(fin, "%d %d %d %d", &n, &m, &c, &r);
if(m<n)
{
aux=c;
c=r;
r=aux;
for(i=0; i<n; i++)
for(j=0; j<m; j++)
{
fscanf(fin, "%d", &a[j][i]);
S+=a[j][i];
}
aux=m;
m=n;
n=aux;
}
else{
for(i=0; i<n; i++)
for(j=0; j<m; j++)
{
fscanf(fin, "%d", &a[i][j]);
S+=a[i][j];
}
}
for(i=0; i<(1<<n); i++)
{
x=i;
s=0;
nr=0;
int ok=1;
for(j=0; j<n && ok==1; j++)
{
st[j]=((x>>j)&1);
if(st[j]==0)
{for(k=0; k<m; k++)
s+=a[j][k];
nr++;
if(nr>r)
ok=0;
if((nr+(n-j))<r)
ok=0;
}
}
if(nr==r)
{
for(j=0; j<m; j++)
v[j]=0;
for(j=0; j<m; j++)
{
for(k=0; k<n; k++)
if(st[k]==1)
v[j]+=a[k][j];
}
sort(v, v+m);
for(j=0; j<c; j++)
s+=v[j];
if((S-s)>maxim)
maxim=S-s;
}
}
fprintf(fout, "%d", maxim);
}