Cod sursa(job #769403)

Utilizator test_666013Testez test_666013 Data 19 iulie 2012 11:21:26
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.72 kb
#include <cstdio>
#include <algorithm>
using namespace std;

int n,m,c[20][20],b[20],s_max;

void rezolva(){
   /* for(int i=1;i<=n;i++)
    for(int j=1;j<=m;j++) c[i][m+1] += c[i][j];
    for(int j=1;j<=m;j++)
    for(int i=1;i<=n;i++) c[n+1][j] += c[i][j];*/

    int i, s0 = 0, s, s1;
, s0 = 0, s, s1;

    for(int i=1;i<=n;i++)
    for(int j=1;j<=m;j++) s0 += c[i][j];
   // printf("%d\n",s0);

    while( b[n+1] == 0 )
    {
        i = 1;
        while(b[i])
        {
            for(int j=1;j<=m;j++)
            {
                s0 -= c[i][j];
                c[i][j] = -c[i][j];
                s0 += c[i][j];
            }
            b[i] = 0;
            i++;
        }
        b[i] = 1;
            for(int j=1;j<=m;j++)
            {
                s0 -= c[i][j];
                c[i][j] = -c[i][j];
                s0 += c[i][j];
            }

  // for(int i=1;i<=n;i++) printf("%d ",b[i]);// printf("\n%d ",s0);
   // printf("\n");
 /*    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++) printf("%d ",c[i][j]); printf("\n"); } printf("----------------------------------------------\n");*/
    s1 = 0;
    s = s0;
    for(int j=1;j<=m;j++)
    {
        s1 = s;
        for(int i=1;i<=n;i++)
        {
            s1 -= c[i][j];
            s1 += -c[i][j];
        }
        s = max(s, s1);
      //  printf("%d ",s);
    }
      //  printf("\n");
      s_max = max(s_max,s);
    }
}

int main(){
    freopen("flip.in","r",stdin);
    freopen("flip.out","w",stdout);
        scanf("%d %d",&n,&m);
        for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++) scanf("%d",&c[i][j]);

    rezolva();
 //for(int i=1;i<=n+1;i++){
      //  for(int j=1;j<=m+1;j++) printf("%d ",c[i][j]); printf("\n"); }
printf("%d\n",s_max);
    return 0;
}