Cod sursa(job #8783)

Utilizator cyrusVasible daniel cyrus Data 25 ianuarie 2007 16:16:57
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.34 kb
//lucru cu fisiere
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <fstream.h>
FILE *pf;
int n,m;
int mat[17][17];
int suma(int mat[17][17],int m,int n);
int cl(int mat[17][17],int t,int n);
int cc(int mat[17][17],int t,int m);




//functiile
int cc(int mat[17][17],int t,int m)
{static int i;
int sm=0,sp=0;

for(i=1;i<=m;i++)
if (mat[i][t]<0) sm+=mat[i][t];
else sp+=mat[i][t];
if (abs(sm)>sp) return 1; else return 0;
}



int cl(int mat[17][17],int t,int n)
{static int i;
int sm=0,sp=0;

for(i=1;i<=n;i++)
if (mat[t][i]<0) sm+=mat[t][i];
else sp=sp+mat[t][i];
if ((abs(sm))>sp) return 1; else return 0;
}

//suma
int suma(int mat[17][17],int m,int n)
{static int i,j,suma=0;
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
suma+=mat[i][j];
return suma;
}

main(void)
{static int i,j;
pf=fopen("flip.in","r");
fscanf(pf,"%d",&m);
fscanf(pf,"%d",&n);
for(i=1;i<=m;i++){
for(j=1;j<=n;j++){
fscanf(pf,"%d",&mat[i][j]);}
fscanf(pf,"\n");
}
fclose(pf);
for (i=1;i<=m;i++)
if(cl(mat,i,n)) for(j=1;j<=n;j++){if (mat[i][j]<0 ) mat[i][j]=abs(mat[i][j]);
else mat[i][j]=(0-mat[i][j]);}


for (i=1;i<=n;i++)
if(cc(mat,i,m)) for(j=1;j<=m;j++){if (mat[j][i]<0 ) mat[j][i]=abs(mat[j][i]);
else mat[j][i]=(0-mat[j][i]);}
pf=fopen("flip.out","w");
fprintf(pf,"%d",suma(mat,m,n));
fclose(pf);
return 0;}