Pagini recente » Cod sursa (job #1538593) | Cod sursa (job #2661779) | Cod sursa (job #1831842) | Cod sursa (job #233357) | Cod sursa (job #3289632)
#include <bits/stdc++.h>
#define int long long
using namespace std;
ifstream f("elimin.in");
ofstream g("elimin.out");
int n,m,c,r,maxi,solrows[1005],solcol[1005];
int a[1005][1005];
void select()
{
int sum=0;
for (int i=1; i<=n; i++ )
if ( !solrows[i] )
for (int j=1; j<=m; j++ )
if ( !solcol[j] )
sum+=a[i][j];
maxi=max(maxi,sum);
}
void backcol(int k, int cnt)
{
if ( cnt==c )
select();
else
{
for (int i=k; i<=m; i++ )
{
if ( !solcol[i] )
{
solcol[i]=true;
backcol(k+1,cnt+1);
solcol[i]=false;
}
}
}
}
void backrow(int k, int cnt)
{
if ( cnt==r )
backcol(1,0);
else
{
for (int i=k; i<=n; i++ )
{
if ( !solrows[i] )
{
solrows[i]=true;
backrow(k+1,cnt+1);
solrows[i]=false;
}
}
}
}
signed main()
{
f >> n >> m >> r >> c;
for (int i=1; i<=n; i++ )
for (int j=1; j<=m; j++ )
f >> a[i][j];
backrow(1,0);
g << maxi;
return 0;
}