Cod sursa(job #299864)

Utilizator MKLOLDragos Ristache MKLOL Data 7 aprilie 2009 01:20:47
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.62 kb
#include<stdio.h>
int v[20][20],n,m;
int ox(int k)
{int z=0;
     for(int i=1;i<=m;i++)
     z=z+v[k][i];
     if(z<0)
{for(int i=1;i<=m;i++)
    v[k][i]=-v[k][i];
 return -z;}
 return 0;   
}
int oy(int k)
{int z=0;
     for(int i=1;i<=n;i++)
     z=z+v[i][k];
     if(z<0)
     {for(int i=1;i<=n;i++)
     v[i][k]=-v[i][k];
     return -z;
     }return 0;}
int main()
{    int done=0,q=0,d=1,www=1,wako=0,b1,b,y,y1;
     freopen("flip.in","r",stdin);
     freopen("flip.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
    for(int i2=1;i2<=m;i2++)
    scanf("%d",&v[i][i2]);
    while(done==0)
         {done=1;
         if(d%2==1)
         {
         b=0;
         y=0;
         }
         else
         {
                  b1=0;
                  y1=0;
         }
         if(wako==0||wako==1)
         for(int i=1;i<=n;i++)
                 if(d%2==0)
                           b=b+ox(i);
                 else
                           b1=b1+ox(i);
         if(wako==0||wako==2)
         for(int i=1;i<=m;i++)
                         if(d%2==0)
                         y=y+oy(i);
         else
                         y1=y1+oy(i);
              if(b!=0&&y!=0)
         done=0;
         if(www==1)
         done=1;
                if(b1!=0&&b1==b&&y1==y&&y1!=0&&d==10000)
                {
                 if(b1>y1)
                 wako=1;
                 else
                 wako=2;
                 www=1;
                }
                ++d;
         }
for(int i=1;i<=n;i++)
for(int i2=1;i2<=m;i2++)
    q=q+v[i][i2];
    
    printf("%d",q);
}