Cod sursa(job #601949)

Utilizator mihai.filip1608Filip Mihai mihai.filip1608 Data 8 iulie 2011 15:49:34
Problema Jocul Flip Scor 10
Compilator c Status done
Runda Arhiva de probleme Marime 1.9 kb
#include<stdio.h>
#include<stdlib.h>

int main()
{FILE* f,*g;
f=fopen("flip.in","rt");
g=fopen("flip.out","wt");
int lin,col;
fscanf(f,"%i",&lin);
fscanf(f,"%i",&col);
int i,j,k,p,q;
long int v[16][16];
for(i=0;i<lin;i++)
  for(j=0;j<col;j++)
  fscanf(f,"%li",&v[i][j]);

int suma=0,sl[lin],sc[col];
for(i=0;i<lin;i++)
  {sl[i]=0;
  for(j=0;j<col;j++)
    sl[i]=sl[i]+v[i][j];
  }
for(j=0;j<col;j++)
  {sc[j]=0;
  for(i=0;i<lin;i++)
    sc[j]=sc[j]+v[i][j];
  }
  
for(i=0;i<lin;i++)
  for(j=0;j<col;j++)
    {if(sl[i] >= 0 && sc[j] >= 0)
      continue;
     if(sl[i] >= 0 && sc[j]  < 0)
       if(sl[i]+sc[j] > sl[i]-2*v[i][j]-sc[j])
         continue;
       else
         for(k=0;k<lin;k++)
           {sl[k]=sl[k]-2*v[k][j];
           sc[j]=-sc[j];
           }
     if(sl[i] < 0 && sc[j] >= 0)
       if(sl[i]+sc[j] > sc[j]-2*v[i][j]-sl[i])
         continue;
       else
         for(k=0;k<col;k++)
           {sc[k]=sc[k]-2*v[i][k];
           sl[i]=-sl[i];
           }
     if(sl[i] < 0 && sc[j] < 0)
       {if(sl[i]-2*v[i][j]-sc[j] > sc[j]-2*v[i][j]-sl[i] && sl[i]-2*v[i][j]-sc[j] > -sl[i]-sc[j] )
         for(k=0;k<lin;k++)
           {sl[k]=sl[k]-2*v[k][j];
            sc[j]=-sc[j];
           }
       if(sl[i]-2*v[i][j]-sc[j] > sc[j]-2*v[i][j]-sl[i] && sl[i]-2*v[i][j]-sc[j] < -sl[i]-sc[j] )
          {sl[i]=-sl[i];
          sc[j]=-sc[j];
          for(p=0;p<lin;p++)
            if(p!=i)
              sl[p]=sl[p]-2*v[p][j];
          for(q=0;q<col;q++)      
            if(q!=j)
              sc[q]=sc[q]-2*v[i][q];
          }
       if(sl[i]-2*v[i][j]-sc[j] < sc[j]-2*v[i][j]-sl[i] && sc[j]-2*v[i][j]-sl[i] > -sl[i]-sc[j] )
         for(k=0;k<col;k++)
           {sc[k]=sc[k]-2*v[i][k];
           sl[i]=-sl[i];
           }
       }
    }
    
for(i=0;i<lin;i++)
  suma=suma+sl[i];
fprintf(g,"%i",suma); 
  
fclose(f);
fclose(g);
return 0;
}