Cod sursa(job #29791)

Utilizator the_alch3m1stJeler Stefan the_alch3m1st Data 9 martie 2007 22:45:22
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.38 kb
#include <stdio.h>
long int a[16][16],b[16][16];

FILE *fin, *fout;
long int suma(long int s[16][16],int x,int y)
{ int fi,fj;
  long int fsuma=0;
  for(fi=0;fi<x;fi++)
     for(fj=0;fj<y;fj++)
         fsuma+=s[fi][fj];
  return fsuma;
  
    
}

 int copiere(int o ,int x, int y)
{
int fi,fj;
if(o==1){
     for(fi=0;fi<x;fi++)
     for(fj=0;fj<y;fj++)
     a[fi][fj]=b[fi][fj];
     }
if(o==2)
       {
     for(fi=0;fi<x;fi++)
     for(fj=0;fj<y;fj++)
     b[fi][fj]=a[fi][fj];
     }
      
return 0;
}

        


int main()
{long int stot,k[16][16];
 int m,n,i,j,mod;
 fin=fopen("flip.in","r");
 fout=fopen("flip.out","w");
 fscanf(fin,"%d",&m);
 fscanf(fin,"%d",&n);
 for(i=0;i<m;i++)
    for(j=0;j<n;j++)
      {fscanf(fin,"%d",&a[i][j]);
        b[i][j]=a[i][j];
        k[i][j]=b[i][j]*-1;
       }
      
 stot=suma(a,m,n);
mod=0;
while(!mod)
{mod=1;
        
           
             for(i=0;i<n;i++)
                { for(j=0;j<m;j++)
                    {
                      b[j][i]=b[j][i]*-1;
                     } 
                   if(suma(b,m,n)>stot){stot=suma(b,m,n);copiere(1,m,n);mod=0;}
                      else copiere(2,m,n);
                }

for(i=0;i<m;i++)
           { for(j=0;j<n;j++)
                 {
                    b[i][j]=b[i][j]*-1;
                    }
                   if(suma(b,m,n)>stot) {stot=suma(b,m,n);copiere(1,m,n);mod=0;}
                      else copiere(2,m,n);
            }
          
}//while

for(i=0;i<=m;i++)
   for(j=0;j<=n;j++)
       b[i][j]=k[i][j];
copiere(1,m,n);


mod=0;
while(!mod)
{mod=1;
        
           
             for(i=0;i<n;i++)
                { for(j=0;j<m;j++)
                    {
                      b[j][i]=b[j][i]*-1;
                     } 
                   if(suma(b,m,n)>stot){stot=suma(b,m,n);copiere(1,m,n);mod=0;}
                      else copiere(2,m,n);
                }

          for(i=0;i<m;i++)
                 { for(j=0;j<n;j++)
                    {
                    b[i][j]=b[i][j]*-1;
                    }
                     if(suma(b,m,n)>stot) {stot=suma(b,m,n);copiere(1,m,n);mod=0;}
                         else copiere(2,m,n);
                 }
}//while

fclose(fin);
fclose(fout);


 fprintf(fout,"%d",stot);
}