Cod sursa(job #21865)

Utilizator AdixSuciu Adrian Adix Data 24 februarie 2007 19:39:28
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
//Flip
#include <stdio.h>
int m,n;
long int a[850][18];
void citire(){
FILE *in;
in=fopen("flip.in","r");
fscanf(in,"%d %d",&n,&m);
for(int i=0;i<n;i++)
 for(int j=0;j<m;j++){
 fscanf(in,"%ld",&a[i][j]); }
}
long sum_lin(int i){
long sum=0;
 for (int j=0;j<m;++j){
 sum=sum+a[i][j];
 }
 return sum;
}
long sum_col(int j){
 long sum=0;
 for(int i=0;i<n;++i){
  sum=sum+a[i][j];
 }
 return sum;
}
void flip_lin(int i){
 for(int j=0;j<m;++j)
 a[i][j]=-(a[i][j]);
}
void flip_col(int j){
 for (int i=0;i<n;i++)
 a[i][j]=-(a[i][j]);
}
long sum_tot(){
 int i,j;
 long sum=0;
 for(i=0;i<n;i++)
 for(j=0;j<m;j++)
 sum+=a[i][j];
 return sum;
}
void program(){
int b=1;int sum;
while(b){
b=0;
for(int i=0;i<n;++i){
sum=sum_lin(i);
if(sum<-sum) {flip_lin(i);b=1;}
}
//if(b) continue;
for(int j=0;j<m;++j){
sum=sum_col(j);
if(sum<-sum) {flip_col(j);b=1;}
}}FILE *out;
out=fopen("flip.out" ,"w");
fprintf(out,"%ld",sum_tot());
fclose(out);
}
int main(){
citire();
program();

 return 0;
}
/*int main(){
citire();
return 0;
}*/