Pagini recente » Cod sursa (job #695406) | Cod sursa (job #1437212) | Cod sursa (job #76038) | Cod sursa (job #189361) | Cod sursa (job #1829216)
#include <iostream>
#include <fstream>
#include <vector>
#include <math.h>
using namespace std;
int rand[20],init_rand[20];
int col[20],init_col[20];
int x[20][20];
vector <int> z;
int what_to_flip[20];
int rezultat;
int main()
{
ifstream fin("flip.in");
ofstream fout("flip.out");
int n_i,n_j;
fin>>n_i>>n_j;
for(int i=1;i<=n_i;i++){
for(int j=1;j<=n_j;j++){
fin>>x[i][j];
init_rand[i]+=x[i][j];
init_col[j]+=x[i][j];
}
}
int limita=pow(2,n_j)-1;
for(int mask=0;mask<=limita;mask++){
int clona = mask;
int nrtaiat=1;
int sum_test;
while(clona != 0){
sum_test=0;
if(clona%2==1){
what_to_flip[nrtaiat]=1;
}else{
what_to_flip[nrtaiat]=0;
}
nrtaiat++;
clona/=2;
}
/// aici incepe distractia
// for(int q=1;q<=16;q++){
// if(what_to_flip[q]==1)
// sum-=init_col[q];
// else
// sum+=init_col[q];
// }
int sum=0;
for(int q=1;q<=n_i;q++){
int sum_rand=0;
for(int w=1; w<=n_j; w++){
if(what_to_flip[w]==1)
sum_rand-=x[q][w];
else
sum_rand+=x[q][w];
}
if(sum_rand>0)
sum+=sum_rand;
else
sum-=sum_rand;
}
rezultat=max(sum,rezultat);
nrtaiat=1;
}
for(int cpy=1;cpy<=17;++cpy){
col[cpy]=init_col[cpy];
rand[cpy]=init_rand[cpy];
}
fout<<rezultat;
return 0;
}
///pt flip pe coloane , doar modific semnul la col
///pt flip pe randuri