Cod sursa(job #1727969)

Utilizator RG1999one shot RG1999 Data 11 iulie 2016 23:33:39
Problema Jocul Flip Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.56 kb
#include <cstdio>

using namespace std;
int i,j,n,m,pas,ok,nr,s,max1,a[17][17],z,k,sum,s1,s2,pow;
#define DIM 10000
char buff[DIM];
int poz=0;

void citeste(int &numar)
{
     numar = 0;
     char semn='+';
     while (buff[poz] < '0' || buff[poz] > '9')
     {
          semn = buff[poz];
          if (++poz == DIM)
               fread(buff,1,DIM,stdin),poz=0;
     }
     while ('0'<=buff[poz] && buff[poz]<='9')
     {
          numar = numar*10 + buff[poz] - '0';
          if (++poz == DIM)
               fread(buff,1,DIM,stdin),poz=0;
     }
     if (semn == '-')
          numar = -numar;
}
int main()
{
    freopen("flip.in","r",stdin);
    freopen("flip.out","w",stdout);
    pas=1;
    nr=1;
    max1=-999999;
    citeste(n);
    citeste(m);
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
           citeste(a[i][j]);
     for(k=0;k<(1<<n);k++)
     {
         sum=0;
         for(j=0;j<m;j++)
            {
                s1=0;
                s2=0;
                for(i=0;i<n;i++)
         {
             if((1<<i)&k)
             z=a[i][j];
             else
                z=-a[i][j];
             if(z<0)
                s1+=z;
             else
                s2+=z;

         }
              if(-s1>s2)
              {
                  sum+=(-s1);
                  sum-=s2;
              }
              else
              {
                  sum+=s2;
                  sum+=s1;
              }
        }
        if(sum>max1)
            max1=sum;
     }
     printf("%d",max1);
    return 0;
}