Cod sursa(job #36165)

Utilizator the_alch3m1stJeler Stefan the_alch3m1st Data 23 martie 2007 08:06:24
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <stdio.h>

FILE *fin,*fout;
long int a[16][16],n,k[16][16],m;

int citire()
{int i,j;
    fin=fopen("flip.in","r");
    fscanf(fin,"%d%d",&n,&m);
    for(i=0;i<n;i++)
       for(j=0;j<m;j++) fscanf(fin,"%d",&a[i][j]);
    fclose(fin);
return 0;
}

int suma(long int x[16][16])
{ int i,j;
 long int suma=0;
  for(i=0;i<n;i++)
     for(j=0;j<m;j++) suma+=x[i][j];
  return suma;
}

int copiere(int opt)
{int i,j;

if(opt==1)
   {for(i=0;i<n;i++)
       for(j=0;j<m;j++)
          k[i][j]=a[i][j];
    }
if(opt==2)
   {for(i=0;i<n;i++)
       for(j=0;j<m;j++)
          a[i][j]=k[i][j];
    }
          
}
int comutator()
{int i,j,mod=1;

copiere(1);
 while(mod)
 { mod=0;
    
     for(i=0;i<n;i++)
     {
      for(j=0;j<m;j++)
        {k[i][j]=k[i][j]*-1;}
   
      if(suma(k)>suma(a)){copiere(2);mod=1;}
        else copiere(1);
      }
      
      for(i=0;i<m;i++)
     {
      for(j=0;j<n;j++)
        {k[j][i]=k[j][i]*-1;}
      if(suma(k)>suma(a)){copiere(2);mod=1;}
        else copiere(1);
      }
  }
 return 0;
}
int scriere()
{
    fout=fopen("flip.out","w");
    fprintf(fout,"%d",suma(a));
    fclose(fout);
return 0;
}

int main()
{citire();
comutator();
scriere();
return 0;
}