Pagini recente » Monitorul de evaluare | Statistici Ioana Tincu (Ioanaucnit) | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #150006)
Cod sursa(job #150006)
#include<stdio.h>
#define NMAX 551
long z[NMAX],y[20],x[NMAX][NMAX],i,j,k,l,a,s,rez,n,m,ln,cl;
void sol()
{
z[0]=0;
s=0;
for (i=1;i<=n;i++)
{
z[0]++;
z[i]=0;
for (j=1;j<=m;j++)
if (y[j]==0)
z[i]+=x[i][j];
s+=z[i];
}
a=1;
while (a)
{
a=0;
for (i=1;i<n;i++)
if (z[i]>z[i+1])
{
a=z[i];
z[i]=z[i+1];
z[i+1]=a;
a=1;
}
}
for (i=1;i<=ln;i++)
s-=z[i];
if (s>rez)
rez=s;
}
void back(int p, int k)
{
if (k==cl)
sol();
else
if (p<m)
{
back(p+1,k);
y[p]=1;
back(p+1,k+1);
y[p]=0;
}
}
int main()
{
freopen("elimin.in","r",stdin);
freopen("elimin.out","w",stdout);
scanf("%ld%ld%ld%ld",&n,&m,&ln,&cl);
rez=-1;
if (m<=15)
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
scanf("%ld",&x[i][j]);
else
{
a=n; n=m; m=a;
a=ln; ln=cl; cl=a;
for (j=1;j<=m;j++)
for (i=1;i<=n;i++)
scanf("%ld",&x[i][j]);
}
back(1,0);
printf("%ld\n",rez);
return 0;
}