Cod sursa(job #614434)

Utilizator themihhMihnea Donciu themihh Data 6 octombrie 2011 15:24:46
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.56 kb
// Flip.cpp : Defines the entry point for the console application.
//


#include <stdio.h>
#include <stdlib.h>


int main(int argc, char* argv[])
{
    int **a, sum = 0;
    int n, m;
    int i, j;
    int suml = 0, sumc = 0;
    FILE *f1, *f2;
    f1 = fopen("flip.in", "r");
    f2 = fopen("flip.out", "w");

    if (f1 == NULL || f2 == NULL)
    {
        return 0;
    }

    if (fscanf(f1, "%d\n%d\n", &n, &m) < 0)
    {
        fclose(f1);
        fclose(f2);
    }
    a = (int **) malloc(sizeof(int *) * n);
    for (i = 0; i < n; i++)
    {
        a[i] = (int *) malloc(sizeof(int) * m);
        for (j = 0; j < m; j++)
        {
            fscanf(f1, "%d", &a[i][j]);
        }
    }

    for (i = 0; i < n; i++)
    {
        suml = 0;
        for (j = 0; j < m; j++)
        {
            suml += a[i][j];
        }
        if (suml < 0)   //daca suma pe linie e negativa, comutam linia
        {
            for (j = 0; j < m; j++)
            {
                a[i][j] = -a[i][j];
            }
            suml = -suml;
        }
        sum += suml;
    }
    for (j = 0; j < m; j++)
    {
        sumc = 0;
        for (i = 0; i < n; i++)
        {
            sumc += a[i][j];
        }
        if (sumc < 0)   //daca suma pe coloana e negativa, comutam coloana
        {
            for (i = 0; i < n; i++)
            {
                a[i][j] = -a[i][j];
            }
            sum = sum - sumc - sumc;
        }
    }

    fprintf(f2, "%d", sum);
    fclose(f1);
    fclose(f2);
	return 0;
}