Pagini recente » Cod sursa (job #2990219) | Cod sursa (job #2298958) | Cod sursa (job #2860705) | Cod sursa (job #1441068) | Cod sursa (job #2007323)
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
ifstream fin("Flip.in");
ofstream fout("Flip.out");
class solution{
vector<int>aux;
vector<vector<int>>m;
int suma=0;
/* void afisare(vector<int>&a){
for(auto it:a){
cout<<it<<" ";
}
cout<<"\n";
}*/
int calculeaza_suma(vector<vector<int>> &mm){
int s=0;
for(int i=0;i<mm.size();i++){
for(int j=0; j<mm[0].size();j++){
s+=mm[i][j];
}
}
return s;
}
void genereaza_matrice(vector<vector<int>> mm){
for(int i=0; i<mm.size();i++){
if(aux[i]==1){
for(int j=0; j<mm[0].size();j++){
mm[i][j]=mm[i][j]*(-1);
}
}
}
for(int i=0; i<aux.size()-mm.size();i++){
if(aux[i+m.size()]==1){
for(int j=0; j<mm.size();j++){
mm[j][i]=mm[j][i]*(-1);
}
}
}
update_suma(mm);
}
void update_suma(vector<vector<int>>&mm){
int k=calculeaza_suma(mm);
if(k>suma){
suma=k;
}
return;
}
public:
int get_suma(){
return suma;
}
int citeste_m(){
int linii, coloane,nr;
fin>>linii>>coloane;
m.resize(linii);
for(int i=0; i<linii;i++){
for(int j=0; j<coloane;j++){
fin>>nr;
m[i].push_back(nr);
}
}
return linii+coloane;
}
void genereaza_combinatii(int poz, int nr){
if(poz==nr){
genereaza_matrice(m);
return;
}
aux.push_back(0);
poz+=1;
genereaza_combinatii(poz,nr);
aux.pop_back();
poz-=1;
aux.push_back(1);
poz+=1;
genereaza_combinatii(poz,nr);
poz-=1;
aux.pop_back();
}
};
int main()
{
solution s;
int nr=s.citeste_m();
s.genereaza_combinatii(0,nr);
fout<<s.get_suma();
return 0;
}