Pagini recente » Cod sursa (job #617318) | Cod sursa (job #2693600) | Cod sursa (job #162144) | Cod sursa (job #1339573) | Cod sursa (job #1083546)
#include <cstdio>
#include <algorithm>
FILE *f,*g;
using namespace std;
int i,j,n,m,N,M,maxx,suma,s[600];
int ap[20],a[600][600];
void backtr(int k, int X)
{
if (k > m+1) return;
if (X == M)
{
int i,j;
for (i=1; i<=n; ++i)
{
s[i]=0;
for (j=1; j<=m; ++j)
{
if (ap[j]==0) s[i]+=a[i][j];
}
}
sort(s+1,s+n+1);
suma=0;
for (i=N+1; i<=n; ++i)
suma+=s[i];
if (suma>maxx)
maxx=suma;
}
else
{
ap[k]=1;
backtr(k+1,X+1);
ap[k]=0;
backtr(k+1,X);
}
}
int main ()
{
f=fopen("elimin.in","r");
g=fopen("elimin.out","w");
fscanf(f,"%d%d%d%d",&n,&m,&N,&M);
if (n>=m)
{
for (i=1; i<=n; ++i)
for (j=1; j<=m; ++j)
fscanf(f,"%d",&a[i][j]);
}
else
{
int aux;
aux = n;
n = m;
m = aux;
aux = N;
N = M;
M = aux;
for (j=1; j<=m; ++j)
for (i=1; i<=n; ++i)
fscanf(f,"%d",&a[i][j]);
}
backtr(1,0);
fprintf(g,"%d",maxx);
fclose(f);
fclose(g);
return 0;
}