Cod sursa(job #188230)

Utilizator cnatlLaurian cnatl Data 7 mai 2008 11:16:37
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<stdio.h>
long n, m,x[100][100],o[100],v[100],ok=1,i,j,s;
void flipc(long jj);
void flipl(long ii);
int main()
{   freopen("flip.in","rt",stdin); freopen("flip.out","wt",stdout);
    scanf("%ld%ld",&n,&m);
    for(i=1;i<=n;i++)
    for(j=1;j<=m;j++) { scanf("%ld",&x[i][j]);
                        o[i]+=x[i][j]; v[j]+=x[i][j];
                        }
    while(ok)
    { ok=0;
      for(i=1;i<=m;i++) if(v[i]<0) { flipc(i); ok=1;}
      for(i=1;i<=n;i++) if(o[i]<0) { flipl(i); ok=1;}
    }
    for(i=1;i<=m;i++) s+=v[i];
    printf("%ld",s);
    fcloseall();
    return 0;
}
void flipc(long jj)
{    long ii;
     for(ii=1;ii<=n;ii++) { o[ii]-=2*x[ii][jj];
                            x[ii][jj]*=-1;
                            }
     v[jj]*=-1;
}
void flipl(long ii)
{    int jj;
     for(jj=1;jj<=m;jj++) { v[jj]-=2*x[ii][jj];
                            x[ii][jj]*=-1;
                            }
     o[ii]*=-1;
}