Cod sursa(job #1727994)

Utilizator RG1999one shot RG1999 Data 12 iulie 2016 00:12:35
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 kb
#include <cstdio>
#include <algorithm>
using namespace std;
int i,j,n,m,pas,ok,nr,s,a[17][17],z,k,pow2,v[17];
int sum,s1,s2,max1;
#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);

    citeste(n);
    citeste(m);
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
               citeste(a[i][j]),max1+=a[i][j];

     pow2=1<<m;
     v[1]=1;
     while(k<=m)
     {

          k=1;
         while(v[k]==1)
         {
             v[k]=0;
             k++;
         }
         v[k]=1;
         sum=0;
         for(i=0;i<n;i++)
            {
                s=0;
                for(j=0;j<m;j++)
         {
             if(v[j])
             s+=a[i][j];
             else
                s=-a[i][j];
         }
         sum+=abs(s);
        }
       max1=max(max1,sum);
     }
     printf("%d",max1);
    return 0;
}