Pagini recente » Cod sursa (job #625938) | Cod sursa (job #44428) | Cod sursa (job #2986661) | Cod sursa (job #1235835) | Cod sursa (job #349632)
Cod sursa(job #349632)
#include <stdio.h>
int n, m, mat[17][17], max;
struct dint{
int m,p;
};
void Read(){
FILE *f;
int i=0,j=0;
f = fopen("flip.in","r");
fscanf(f,"%d %d",&n,&m);
for(i = 0;i<n;++i)
{
for(j=0;j<m;++j)
{
fscanf(f,"%d",&mat[i][j]);
}
}
fclose(f);
}
void Write(){
FILE *f;
f = fopen("flip.out","w");
fprintf(f,"%d",max);
fclose(f);
}
int abs(int a){
if(a>0){return a;}
return -a;
}
dint GetCol(int col){
dint rez;
rez.p = 0;
rez.m = 0;
for(register int i = 0;i<n;++i)
{
if(mat[i][col]>0){rez.p+=mat[i][col];}
else{rez.m+=abs(mat[i][col]);}
}
return rez;
}
void SwC(int col){
for(register int i=0;i<n;++i)
{
mat[i][col]=-mat[i][col];
}
}
void SwCol(int col){
dint t;
t = GetCol(col);
if(t.m>t.p){SwC(col);}
}
void SwColA(){
for(register int i = 0;i<m;++i)
{
SwCol(i);
}
}
dint GetLin(int lin){
dint t;
t.m = 0;
t.p = 0;
for(register int i = 0;i<m;++i)
{
if(mat[lin][i]>0){t.p+=mat[lin][i];}
else{t.m+=abs(mat[lin][i]);}
}
return t;
}
void SwL(int lin){
for(register int i = 0;i<m;++i)
{
mat[lin][i]=-mat[lin][i];
}
}
void SwLin(int lin){
dint t;
t = GetLin(lin);
if(t.m>t.p){SwL(lin);}
}
void SwLinA(){
for(register int i = 0;i<n;++i)
{
SwLin(i);
}
}
int GetMatSum()
{
int ret=0;
int i,j;
for(i=0;i<n;++i)
{
for(j=0;j<m;++j)
{
ret+=mat[i][j];
}
}
return ret;
}
int main(){
Read();
SwColA();
SwLinA();
max=GetMatSum();
Write();
return 0;
}