Pagini recente » Cod sursa (job #2024681) | Cod sursa (job #2751623) | Cod sursa (job #1237863) | Cod sursa (job #1630143) | Cod sursa (job #2570372)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("elimin.in");
ofstream fout ("elimin.out");
int s,c[8001],l[8001],r,c1,m,i,j,maxi,n,v[8001],nr,a[10][4001],cc[8001];
void sol ()
{
int s1=s,i;
for (i=1; i<=m; i++)
cc[i]=c[i];
sort (cc+1,cc+m+1);
for (i=1; i<=c1; i++)
s1-=cc[i];
if (s1>maxi) maxi=s1;
}
void bkt (int k)
{
int i,j,ii;
if (k<=n)
{
for (i=1; i<=2; i++)
{
v[k]=i;
if (v[k]==1)
{
s-=l[k];
nr++;
for (j=1; j<=m; j++)
c[j]-=a[k][j];
if (nr==r)
{
sol();
}
else bkt(k+1);
for (j=1; j<=m; j++)
c[j]+=a[k][j];
s+=l[k];
nr--;
}
else
{
bkt(k+1);
}
}
}
}
int main()
{
fin>>n>>m>>r>>c1;
if (n<m)
{
for (i=1; i<=n; i++)
{
for (j=1; j<=m; j++)
{
fin>>a[i][j];
l[i]+=a[i][j];
c[j]+=a[i][j];
s+=a[i][j];
}
}
}
else
{
for (i=1; i<=n; i++)
{
for (j=1; j<=m; j++)
{
fin>>a[j][i];
l[j]+=a[j][i];
c[i]+=a[j][i];
s+=a[j][i];
}
}
swap(r,c1);
swap(n,m);
}
bkt(1);
fout<<maxi;
// fout<<sizeof(a)/1024.0/1204.;
return 0;
}