Pagini recente » Cod sursa (job #1517394) | Cod sursa (job #2053936) | Cod sursa (job #2781092) | Cod sursa (job #1448746) | Cod sursa (job #703792)
Cod sursa(job #703792)
#include <iostream>
#include <fstream>
#include <limits.h>
using namespace std;
int n, m, st[20], a[20][20], smax=-INT_MAX;
ifstream f("flip.in");
ofstream g("flip.out");
void citire() {
int i, j;
f>>n>>m;
for(i=1; i<=n; i++) {
for(j=1; j<=m; j++) {
f>>a[i][j];
}
}
}
void tipar() {
int i;
for(i=1; i<=m; i++) cout<<st[i]<<" ";
cout<<"\n";
}
int verifica() {
int i, j, s;
//intorc coloanele in functie de valorile stivei
for(j=1; j<=m; j++) {
if(st[j]==1) {
for(i=1; i<=n; i++) a[i][j]*=-1;
}
}
for(i=1; i<=n; i++) {
s=0;
for(j=1; j<=m; j++) s+=a[i][j];
if(s<0) { for(j=1; j<=m; j++) a[i][j]*=-1; }
}
s=0;
for(i=1; i<=n; i++) {
for(j=1; j<=m; j++) {
s+=a[i][j];
}
}
for(j=1; j<=m; j++) {
if(st[j]==1) {
for(i=1; i<=n; i++) a[i][j]*=-1; //revin la starea initiala
}
}
return s;
}
void back(int k) {
int i, stemporar;
for(i=1; i>=0; i--) {
st[k]=i;
if(k==m) {
stemporar=verifica();
if(stemporar>smax) smax=stemporar;
//tipar();
}
else back(k+1);
}
}
int main() {
citire();
back(1);
g<<smax;
f.close();
g.close();
return 0;
}