Cod sursa(job #458691)

Utilizator zooppAccount deletion pending zoopp Data 25 mai 2010 20:32:17
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.53 kb
#include <cstdio>

void doIt(int what[][17], int &n, int &m, bool continua)
{
    if(!continua)
        return;
        
    int sumaPos, sumaNeg;
    bool facutMod = false;
    
    for(int k = 0; k < 2; k++)
    {
        sumaPos = 0; sumaNeg = 0;
        
        for(int i = 0; i < m; i++)
        {
            for(int j = 0; j < n; j++)
                if(what[i][j] > 0)
                    sumaPos += what[i][j];
                else
                    sumaNeg -= what[i][j];
                    
            if(sumaPos < sumaNeg)
            {
                for(int j = 0; j < n; j++)
                    what[i][j] *= -1;
                facutMod = true;
            }
        }
        
        n = m^n;
        m = m^n;
        n = m^n;
    }
    doIt(what, n, m, facutMod);
}

int main()
{
    int tabla[17][17], n, m, suma; // n - linii, m - coloane
    FILE *input = fopen("flip.in", "r");
    FILE *output = fopen("flip.out", "w");
    
    fscanf(input, "%d%d", &n,&m);
    
    for(int i = 0; i < n; i++)
        for(int j = 0; j < m; j++)
            fscanf(input, "%d", &tabla[i][j]);
            
    doIt(tabla, n, m, true);
    suma = 0;
    
    for(int i = 0; i < n; i++)
        for(int j = 0; j < m; j++)
            suma  += tabla[i][j];
            
    /*for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < m; j++)
            printf("%d ", tabla[i][j]);
        printf("\n");
    }
    getchar();*/
            
    fprintf(output, "%d", suma);
    return 0;
}