Cod sursa(job #1212482)

Utilizator radudurlesteanuDurlesteanu Radu Stefan radudurlesteanu Data 24 iulie 2014 20:54:36
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <cstdio>
using namespace std;
long a[16][16],n,i,j,sp,sm,S,m,maxim;
bool bun;
int main()
{
freopen("flip.in","r",stdin);
freopen("flip.out","w",stdout);
scanf("%ld%ld",&n,&m);
for (i=0;i<n;i++)
for (j=0;j<m;j++)
   {
   scanf("%ld",&a[i][j]);
   S+=a[i][j];
   }
bun=true;maxim=-256000000000;
while (bun)
   {
   bun=false;
   for (j=0;j<m;j++)
      {
      for (i=0;i<n;i++)
      if (a[i][j]<0) sm-=a[i][j];
                else sp+=a[i][j];
      if (sm>sp) {
                 sm-=sp;
                 sm*=2;
                 S+=sm;
                 bun=true;
                 for (i=0;i<n;i++) a[i][j]*=-1;
                 }
       if (maxim<S) maxim=S;
       sm=0;sp=0;
      }
   for (i=0;i<n;i++)
      {
      for (j=0;j<m;j++)
      if (a[i][j]<0) sm-=a[i][j];
                else sp+=a[i][j];
      if (sm>sp) {
                 sm-=sp;
                 sm*=2;
                 S+=sm;
                 bun=true;
                 for (j=0;j<m;j++) a[i][j]*=-1;
                 }
      if (maxim<S) maxim=S;
      sm=0;sp=0;
      }
   }
printf("%ld",maxim);
}