Pagini recente » Cod sursa (job #3186681) | Borderou de evaluare (job #2041507) | Cod sursa (job #1302480) | Cod sursa (job #490313) | Cod sursa (job #2126762)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
int n,m,a[20][20],x1[16],x2[16],s,smax;
void citire(){
f>>n>>m;x1[0]=1;x2[0]=2;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
f>>a[i][j];s+=a[i][j];
}
smax=s;
f.close();
}
void prelSol(int z,int x[]){
for(int i=1;i<=z;i++)
if(x[i]==1){
if(z==n)
for(int j=1;j<=m;j++)
s-=(2*a[i][j]);
else
for(int j=1;j<=n;j++)
s-=(2*a[j][i]);
}
if(s>smax)
smax=s;
}
void Back(int z,int x[]){
int k;
for(k=1;k<=z;k++)
x[k]=-1;
k=1;
while(k>0){
if(k==z+1){
prelSol(z,x);
if(z!=m)Back(m,x2);
for(int i=1;i<=z;i++)
if(x[i]==1){
if(z==n)
for(int j=1;j<=m;j++)
s+=(2*a[i][j]);
else
for(int j=1;j<=n;j++)
s+=(2*a[j][i]);
}
k--;
}
else
if(x[k]<=0){
x[k]++;
k++;
}
else{
x[k]=-1;
k--;
}
}
}
int main(){
citire();
Back(n,x1);
g<<smax;
g.close();
return 0;
}