Pagini recente » Cod sursa (job #2430923) | Cod sursa (job #30576) | Cod sursa (job #1163365) | Cod sursa (job #515264) | Cod sursa (job #788907)
Cod sursa(job #788907)
#include <fstream>
#include <vector>
#include <cstdlib>
using namespace std;
inline void flip(vector< vector<int> > &tabla, unsigned int code);
int main(){
ifstream fin("flip.in");
ofstream fout("flip.out");
int n,m;
int max_sum=0;
fin>>n>>m;
vector< vector<int> > tabla(n,vector<int>(m));
for(int i=0;i<n;++i) for(int j=0;j<m;++j){ fin>>tabla[i][j]; max_sum+=tabla[i][j]; }
vector<bool> setari(m,false);
vector<bool> considered(m,false);
int ks=0;
while(ks>-1){
if(!considered[ks]) considered[ks]=true;
else if(!setari[ks]){ setari[ks]=true; flip(tabla,ks); }
else{ setari[ks]=false; considered[ks]=false; flip(tabla,ks); ks--; continue; }
if(ks==m-1){
int curr_sum=0;
for(int i=0;i<n;++i){
int line_sum=0;
for(int j=0;j<m;++j) line_sum+=tabla[i][j];
curr_sum+=abs(line_sum);
}
if(curr_sum>max_sum) max_sum=curr_sum;
}
else ++ks;
}
fout<<max_sum<<'\n';
}
inline void flip(vector< vector<int> > &tabla, unsigned int code){
for(unsigned i=0;i<tabla.size();++i) tabla[i][code]=-tabla[i][code];
}