Pagini recente » Cod sursa (job #1420851) | Cod sursa (job #398804) | Cod sursa (job #1858042) | Cod sursa (job #1185312) | Cod sursa (job #1716222)
#include<iostream>
#include<fstream>
#include<algorithm>
using namespace std;
int i,j,n,m,sol,mask,r,c,sum,s_aux,nr,sc[8000];
int main()
{
ifstream cin("elimin.in");
ofstream cout("elimin.out");
cin>>n>>m>>r>>c;
int d1=min(n,m);
int d2=max(n,m);
int a[d1+3][d2+3];
if(n<=m)
{
// int a[n+3][m+3];
for(i=1;i<=n;i++)
for(j=1;j<=m;j++){
cin>>a[i][j];
sum+=a[i][j];
}
}
else
{
// int a[m+3][n+4];
for(i=1;i<=n;i++)
for(j=1;j<=m;j++){
cin>>a[j][i];
sum+=a[j][i];
}
swap(n,m);
swap(r,c);
}
for(mask=0;mask<(1<<(n));mask++)
{
nr=0;
s_aux=sum;
for(j=0;(1<<j)<=mask;j++)
if((mask&(1<<j))!=0)
nr++;
if(nr==r)
{
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if((mask&(1<<(i-1)))!=0)
s_aux-=a[i][j];
else
sc[j]+=a[i][j];
}
sort(sc+1,sc+1+m);
for(j=1;j<=c;j++)
s_aux-=sc[j];
for(j=1;j<=m;j++)
sc[j]=0;
sol=max(sol,s_aux);
}
}
cout<<sol;
return 0;
}