Cod sursa(job #520959)

Utilizator maritimCristian Lambru maritim Data 10 ianuarie 2011 21:42:22
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
#include<iostream>
using namespace std;

int A[17][17];
int n;
int m;

void citire(void)
{
     FILE *f = fopen("flip.in","r");
     
     fscanf(f,"%d %d",&n,&m);
     for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
           fscanf(f,"%d",&A[i][j]);
     
     fclose(f);
}

void schimbare(int lc, int stare)
{
     if(stare == 1)
       for(int i = 1;i<=m;i++)
          A[lc][i] *= -1;
     else
       for(int i=1;i<=n;i++)
          A[i][lc] *= -1;
}

void selectare(void)
{
     int suma;
     int gata = 1;
     while(gata)
     {
     gata = 0;
     for(int i=1;i<=n;i++)
     {
        suma = 0;
        for(int j=1;j<=m;j++)
           suma += A[i][j];
        if(suma<=0) { schimbare(i,1); gata = 1; }
     }
     for(int i=1;i<=m;i++)
     {
        suma = 0;
        for(int j=1;j<=n;j++)
           suma += A[j][i];
        if(suma<=0) { schimbare(i,2); gata = 1; }
     }
     }
}       

int sumam(void)
{
     int suma = 0;
     for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
           suma += A[i][j];
     return suma;
}

int main()
{
    FILE *f = fopen("flip.out","w");
    
    citire();
    selectare();
    fprintf(f,"%d",sumam());
    
    fclose(f);
    return 0;
}