Pagini recente » Cod sursa (job #275456) | Cod sursa (job #1874275) | Cod sursa (job #2778520) | Cod sursa (job #1699476) | Cod sursa (job #2242341)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("elimin.in");
ofstream fout("elimin.out");
int n,m,r,c,total,summax;
int t[1001][1001],l[1001];
void find(int sum)
{
for(int j=1;j<=n;j++)l[j]=t[0][j];
sort(l+1,l+n+1);
for(int j=1;j<=c;j++)
sum-=l[j];
if(sum>summax)
summax=sum;
}
void back(int i,int last, int s)
{
if(i==r)
find(s);
else
for(int j=last;j<=m;j++)
{
for(int k=1;k<=n;k++)
t[0][k]-=t[j][k];
back(i+1,j,s-t[j][0]);
for(int k=1;k<=n;k++)
t[0][k]+=t[j][k];
}
}
int main()
{
fin>>n>>m>>r>>c;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
fin>>t[i][j];
t[i][0]+=t[i][j];
t[0][j]+=t[i][j];
total+=t[i][j];
}
back(0,1,total);
fout<<summax;
return 0;
}