Cod sursa(job #780856)

Utilizator StefanLacheStefan Lache StefanLache Data 22 august 2012 13:20:44
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.44 kb
#include<stdio.h>
#include<stdlib.h>
int verifica_linie(int lin,int **mat,int M)
{
    int i,suma_poz=0,suma_neg=0;
    for(i=0;i<M;++i)
        {
            suma_poz+=mat[lin][i];
            suma_neg+=(-1)*mat[lin][i];
        }
    if(suma_poz >= suma_neg)
        return 0;
    return 1;
}
int verifica_coloana(int col,int **mat,int N)
{
    int i,suma_poz=0,suma_neg=0;
    for(i=0;i<N;++i)
    {
        suma_poz+=mat[i][col];
        suma_neg=(-1)*mat[i][col];
    }
    if(suma_poz>=suma_neg)
        return 0;
    return 1;

}
int suma_matrice(int **mat,int N,int M)
{
    int i,j,S=0;
    for(i=0;i<N;++i)
        for(j=0;j<M;++j)
            S+=mat[i][j];
    return S;
}
int main()
{
    FILE *f=fopen("flip.in","rt");
    int i,j,N,M,**mat;
    fscanf(f,"%i%i",&N,&M);
    mat=(int **)malloc(N*sizeof(int *));
    for(i=0;i<N;++i)
        mat[i]=(int *)malloc(M*sizeof(int));
    for(i=0;i<N;++i)
        for(j=0;j<M;++j)
            fscanf(f,"%i",&mat[i][j]);
    fclose(f);
   for(i=0;i<N;++i)
    {
        int ok=verifica_linie(i,mat,M);
        if(ok == 1)
            for(j=0;j<M;++j)
                mat[i][j]*=-1;
    }
    for(j=0;j<M;++j)
    {
        int ok=verifica_coloana(j,mat,N);
        if(ok == 1)
            for(i=0;i<N;++i)
                mat[i][j]*=-1;
    }
    FILE *g=fopen("flip.out","wt");
    fprintf(g,"%i",suma_matrice(mat,N,M));
    fclose(g);
    return 0;
}