Cod sursa(job #1210971)

Utilizator Black00ViperCazan-Zarzalin Black00Viper Data 21 iulie 2014 18:34:07
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.35 kb
#include <fstream>
#include<iostream>
using namespace std;
int c[17],l[17];
int main()
{
    ifstream in;in.open("flip.in");
    ofstream o;o.open ("flip.out", ofstream::out);
    long M,N,f[17][17],i,j,k,linie,coloana;
    in>>N;in>>M;k=0;linie=0;coloana=0;
    for(i=0;i<N;i++)
    {
     for(j=0;j<M;j++)
        {
            in>>f[i][j];
            c[j]=c[j]+f[i][j];
            l[i]=l[i]+f[i][j];
            k=k+f[i][j];
            if(i==N-1 && c[j]<coloana)coloana=c[j];
        }
     if(i>0 && l[i]<linie)linie=l[i];
    }
    if(linie==0 && coloana==0)o<<k;
    else

    if(coloana < linie)
    {
     for(j=0;j<M;j++)
     if(c[j]<0)
        {
         k=k-2*c[j];l[i]=0;
         for(i=0;i<N;i++)
            {
             f[i][j]= -f[i][j];
             l[i]=l[i]+f[i][j];
            }
        }
     for(i=0;i<N;i++)
        {if(l[i]<0)k=k-2*l[i];}
    }
    //frana
    else
    {
        for(i=0;i<N;i++)
     if(l[i]<0)
        {
         k=k-2*l[i];c[j]=0;
         for(j=0;j<M;j++)
            {f[i][j]= -f[i][j];
             c[j]=c[j]+f[i][j];
            }
        }
        else
        {
            c[j]=0;
          for(j=0;j<M;j++)
             c[j]=c[j]+f[i][j];
        }
     for(j=0;j<M;j++)
        {if(c[j]<0)k=k-2*c[j];}
    }
    o<<k;
    in.close();o.close();
   return 0;
   }