Pagini recente » Monitorul de evaluare | Istoria paginii utilizator/senninel | Cod sursa (job #486532) | Statistici Zuvilsenhaw (Zuvilsenhaw) | Cod sursa (job #2076869)
#include <fstream>
using namespace std;
ifstream f("elimin.in");
ofstream g("elimin.out");
int Min,n,m,c,r,i,j,S;
short int a[8001][8001],x[8001],y[8001],sl[8001],sc[8001];
void suma()
{
int i,j;
int s=0;
for(i=1;i<=r;i++)
s+=sl[x[i]];
for(i=1;i<=c;i++)
s+=sc[y[i]];
for(i=1;i<=r;i++)
for(j=1;j<=c;j++)
s-=a[x[i]][y[j]];
Min=min(Min,s);
}
void coloana(int k)
{
int i;
for(i=y[k-1]+1;i<=k+m-c;i++)
{
y[k]=i;
if(k==c)
suma();
else
coloana(k+1);
}
}
void linie(int k)
{
int i;
for(i=x[k-1]+1;i<=k+n-r;i++)
{
x[k]=i;
if(k==r)
coloana(1);
else
linie(k+1);
}
}
int main()
{
f>>n>>m>>c>>r;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
f>>a[i][j];
S+=a[i][j];
sl[i]+=a[i][j];
sc[j]+=a[i][j];
}
Min=S;
linie(1);
g<<S-Min;
return 0;
}