Pagini recente » Cod sursa (job #2215929) | Cod sursa (job #2227961) | Cod sursa (job #2582942) | Cod sursa (job #837869) | Cod sursa (job #21969)
Cod sursa(job #21969)
//#pragma option -3 -r -Z -O2 -a
#include<fstream.h>
int st[7295],k,q,p,v[7295],n2,m2,m,n;
unsigned long smax=0;
void init()
{st[k]=st[k-1];
}
int succesor()
{if((st[k]<q)&&(k<=p)) {st[k]++;return 1;}
else return 0;
}
int tipar()
{int i,l=0,l2,la=0,j;
unsigned long sum=0;
for(i=1;i<p;i=i+n2)
{la=l;
if(st[i]%n) l=st[i]/n+1;
else l=st[i]/n;
if(i>1) if(la==l) return 0;
for(j=i+1;j<i+n2;j++)
{if(st[j]%n) l2=st[j]/n+1;
else l2=st[j]/n;
if(l!=l2) return 0;
}
}
for(i=1;i<=p;i++) sum=sum+v[st[i]];
if(sum>smax) smax=sum;
return 1;
}
int main()
{ifstream f("elimin.in");
ofstream g("elimin.out");
int r,c,i,j,as;
f>>m>>n>>r>>c;m2=m-r;n2=n-c;
q=m*n;p=q-(n*r+m*c)+r*c;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
f>>v[(i-1)*n+j];
f.close();
k=1;st[1]=0;
while(k)
{as=succesor();
if(as) {if(k==p) tipar();
else {k++;init();}
}
else k--;
}
g<<smax<<'\n';
g.close();
return 0;
}