Pagini recente » Cod sursa (job #1503815) | Cod sursa (job #2357454) | Cod sursa (job #891013) | Cod sursa (job #2802351) | Cod sursa (job #1940901)
#include <bits/stdc++.h>
using namespace std;
ifstream f("elimin.in"); ofstream g("elimin.out");
int suma_maxima=INT_MIN;
int m,n,r,c,v_i[7500],v1_i[7500],v_j[7500],v1_j[7500],a[7500][7500];
void write1(int k){
for(int j=1;j<=m;j++) v1_j[j]=1;
for(int i=1;i<=k;i++) v1_j[v_j[i]]=0;
//for(int i=1;i<=n;i++) g<<v1_i[i]<<" ";g<<"#1\n";
//for(int i=1;i<=n;i++) g<<v1_j[i]<<" ";g<<" *2\n";
int suma=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++) suma+=a[i][j]*v1_i[i]*v1_j[j];
suma_maxima=max(suma_maxima,suma);
}
void bkt1(int k){
for(int i=v_j[k-1]+1;i<=n;i++)
{
v_j[k]=i;
if (k==c) write1(k);
bkt1(k+1);
}
}
void write(int k){
for(int j=1;j<=n;j++) v1_i[j]=1;
for(int i=1;i<=k;i++) v1_i[v_i[i]]=0;
// for(int i=1;i<=n;i++) g<<v1_i[i]<<" ";g<<"#1\n";
if (c!=0)
bkt1(1); else {for (int i=1;i<=max(m,n);i++) v1_j[i]=1; write1(k);}
}
void bkt(int k){
for(int i=v_i[k-1]+1;i<=n;i++)
{
v_i[k]=i;
if (k==r) write(k);
bkt(k+1);
}
}
int main(){
f>>n>>m>>r>>c;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++) f>>a[i][j];
//v1_i[1]=1;v1_i[2]=1;v1_i[3]=0; v1_j[1]=1;v1_j[2]=0;v1_j[3]=1;
//suma_maxima=0;
//for(int i=1;i<=n;i++)
//for(int j=1;j<=m;j++) suma_maxima+=a[i][j]*v1_i[i]*v1_j[j];
if (r!=0) bkt(1); else { for (int i=1;i<=max(m,n);i++) v1_i[i]=1; bkt1(1); }
g<<suma_maxima;
return 0;
}