Pagini recente » Cod sursa (job #2926246) | Cod sursa (job #770406) | Cod sursa (job #103166) | Cod sursa (job #932449) | Cod sursa (job #939972)
Cod sursa(job #939972)
#include<fstream>
using namespace std;
int linsum[17][2], colsum[17][2], n, m, a[17][17];
void regen(){
for(int i=1; i<=n; i++){
linsum[i][0]=0; linsum[i][1]=0;
}
for(int i=1; i<=m; i++){
colsum[i][0]=0; colsum[i][1]=0;
}
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++){
if(a[i][j]>0){
linsum[i][0]+=a[i][j];
colsum[j][0]+=a[i][j];
}else{
linsum[i][1]+=a[i][j];
colsum[j][1]+=a[i][j];
}
}
}
void flipC(int x){
for(int i=1; i<=n; i++){
a[i][x]*=-1;
}
}
void flipL(int x){
for(int j=1; j<=m; j++){
a[x][j]*=-1;
}
}
int main(){
ifstream in("flip.in");
ofstream out("flip.out");
in>>n>>m;
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++){
in>>a[i][j];
}
int maxl, maxlp, maxc, maxcp; bool pp;
do{
pp=false;
regen(); maxl=0; maxc=0;
for(int i=1; i<=n; i++){
if(linsum[i][0]+linsum[i][1]<0){
maxl= (linsum[i][0]+linsum[i][1]) * -1;
maxlp=i;
pp=true;
}
}
for(int i=1; i<=m; i++){
if(colsum[i][0]+colsum[i][1]<0){
maxc= (colsum[i][0]+colsum[i][1]) * -1;
maxcp=i;
pp=true;
}
}
if(pp){
if(maxc>maxl){
flipC(maxcp);
}else{
flipL(maxlp);
}
}
}while(pp);
int sum=0;
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++){
sum+=a[i][j];
}
out<<sum<<"\n";
return 0;
}