Cod sursa(job #11644)

Utilizator cyrusVasible daniel cyrus Data 1 februarie 2007 00:47:59
Problema Jocul Flip Scor 30
Compilator c Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <stdio.h>
#include <fcntl.h>

#define dimmax 16

int matrice[dimmax][dimmax];
int m,n;

//suma pe linii/coloane

long sumalin(int l)
{
int i;
long suma=0;
for (i=0;i<n;i++)
	suma+=matrice[l][i];
return suma;
}

long sumacol(int c)
{
int i;
long suma=0;
for (i=0;i<m;i++)
	suma+=matrice[i][c];
return suma;
}

void citire(FILE *input)
{
fscanf(input,"%d %d",&m,&n);
int i,j;
for (i=0;i<m;i++)
	for (j=0;j<n;j++)
		fscanf(input,"%d",&matrice[i][j]);
}

//functiile opin,opcol implementeaza operatiunea de negare

void oplin(int l)
{
int i;
for (i=0;i<n;i++)
	matrice[l][i]*=-1;
}

void opcol(int c)
{
int i;
for (i=0;i<m;i++)
	matrice[i][c]*=-1;
}

void scrie(FILE *out)
{
out=fopen("flip.out","w+");
int i,j;
long suma=0;
for (i=0;i<m;i++)
	for (j=0;j<n;j++)
		suma+=matrice[i][j];
fprintf(out,"%ld",suma);
fclose(out);
}

int main()
{
FILE *pf;
pf=fopen("flip.in","r");
citire(pf);
fclose(pf);

char sch=1,i;
while (sch!=0)
	{sch=0;
	for (i=0;i<m;i++)
			if (sumalin(i)<0) {
					   oplin(i);
					   sch=1;
					  }
	for (i=0;i<n;i++)
			if (sumacol(i)<0) {
					   opcol(i);
					   sch=1;
					  }	
	}
scrie(pf);
return 0;
}