Cod sursa(job #1195353)

Utilizator MaarcellKurt Godel Maarcell Data 6 iunie 2014 22:22:37
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <stdio.h>
#include <iostream>
long long int a[20][20],n,m,max;

long long int Sum()
{
    long long int i,j,summ;
    summ=0;
    for (i=0;i<n;i++)
        for (j=0; j<m; j++) summ+=a[i][j];
    return summ;
}
void back(){
    long long int i,j,temp1,temp2;
    long long int cur = Sum();
    if (cur > max) max=cur;
    for (i=0; i<n; i++){
        temp1=0;
        temp2=0;
        for (j=0; j<m; j++) {temp1+=a[i][j]; temp2+=-1*a[i][j];}
        if (temp2>temp1) { for (j=0; j<m; j++) a[i][j]*=-1; back(); for (j=0; j<m; j++) a[i][j]*=-1;}

    }
    for (j=0; j<m; j++){
        temp1=0;
        temp2=0;
        for (i=0;i<n;i++) {temp1+=a[i][j]; temp2+=-1*a[i][j];}
        if (temp2>temp1) { for (i=0;i<n;i++) a[i][j]*=-1; back(); for (i=0;i<n;i++) a[i][j]*=-1;}

    }

}
int main(){
    long long int i,j;
    freopen("flip.in","r",stdin);
    scanf("%lld %lld\n",&n,&m);
    for (i=0; i<n; i++){
        for (j=0; j<m; j++)
            scanf("%lld", &a[i][j]);
        scanf("\n");
    }

    max=Sum();
    back();
    freopen("flip.out","w",stdout);
    printf("%lld",max);
    return 0;
}