Pagini recente » Cod sursa (job #1804029) | Cod sursa (job #1791310) | Cod sursa (job #842033) | Cod sursa (job #1812699) | Cod sursa (job #1073865)
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int a[16][7300], st[20], v[7300], s=0, n, m, c, r, maxim=0;
void back(int p)
{
int i, j, nr=0;
if(p==n)
{
s=0;
for(i=0; i<m; i++)
v[i]=0;
for(i=0; i<n; i++)
if(st[i]==0)
nr++;
if(nr==r)
{
for(i=0; i<n; i++)
if(st[i]==1)
{
for(j=0; j<m; j++)
v[j]+=a[i][j];
}
sort(v, v+m);
for(j=c; j<m; j++)
s+=v[j];
}
if(s>maxim)
maxim=s;
}
else
{
st[p]=0;
back(p+1);
st[p]=1;
back(p+1);
}
}
int main()
{
FILE *fin, *fout;
fin=fopen("elimin.in", "r");
fout=fopen("elimin.out", "w");
int i, j, k, x, nr, 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]);
}
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]);
}
}
back(0);
fprintf(fout, "%d", maxim);
}