Pagini recente » Cod sursa (job #79608) | Cod sursa (job #480976) | Cod sursa (job #822220) | Cod sursa (job #2718722) | Cod sursa (job #939973)
Cod sursa(job #939973)
#include<fstream>
using namespace std;
long long 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];
}
long long 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);
long long 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;
}