Cod sursa(job #11652)

Utilizator Agent_SmithSilaghi Raul Agent_Smith Data 1 februarie 2007 06:56:21
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include<stdio.h>
int n,m,i,j;
long int s,v[17][17],ml[17],mc[17],pl[17],pc[17];
void comuta_c(int k)
{
 int i,aux;
 for(i=1;i<=n;i++) v[i][k]=-v[i][k];
 aux = mc[k];
 mc[k]=pc[k];
 pc[k]=aux;
}
void comuta_l(int k)
{
 int i,aux;
 for(i=1;i<=n;i++) v[k][i]=-v[k][i];
 aux = ml[k];
 ml[k]=pl[k];
 pl[k]=aux;
}
int main()
{
 FILE *in=fopen("flip.in","rt");
 fscanf(in,"%d",&n);
 fscanf(in,"%d",&m);
 for(i=1;i<=n;i++)
  for(j=1;j<=m;j++)
  {
   fscanf(in,"%ld",&v[i][j]);
   if(v[i][j]>0) pc[j]+=v[i][j];
   else mc[j]+=v[i][j];
  }
 fclose(in);
 FILE *out=fopen("flip.out","wt");
 for(i=1;i<=m;i++) if(mc[i]+pc[i]<=0) comuta_c(i);
 for(i=1;i<=n;i++)
  for(j=1;j<=m;j++)
   if(v[i][j]>0) pl[i]+=v[i][j];
   else ml[i]+=v[i][j];
 for(i=1;i<=n;i++) if(ml[i]+pl[i]<=0) comuta_l(i);

 for(i=1;i<=n;i++)
 {
  for(j=1;j<=m;j++)
  {
   s+=v[i][j];fprintf(out,"%d ",v[i][j]);
  }
   fprintf(out,"\n");
 }
 fprintf(out,"%d",s);
 fclose(out);
 return 0;
}