Cod sursa(job #613374)

Utilizator AndreeaNNedelcu Andreea AndreeaN Data 22 septembrie 2011 19:54:17
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.34 kb
#include<stdio.h>
FILE *f=fopen("flip.in","r"),*g=fopen("flip.out","w");
long int n,m,a[17][17],sum[34],maxs=0; //sum[1->n]=linii, sum[n+1->m]=coloane

void citire(){
long int i,j;
	fscanf(f,"%ld %ld\n",&n,&m);
	for(i=1; i<=n; i++){
		for(j=1; j<=m; j++){
			fscanf(f,"%ld",&a[i][j]);
		}
	}
}

void sume(){
long int i,j,suma=0,col;
//lii
	for(i=1; i<=n; i++){
		suma=0;
		for(j=1; j<=m; j++){
			suma=suma+a[i][j];
		}
		sum[i]=suma;
	}
//coloane
	suma=0; col=n;
	for(j=1; j<=m; j++){
		suma=0; col++;
		for(i=1; i<=n; i++){
			suma=suma+a[i][j];
		}
		sum[col]=suma;
	}
}

void schimba(long int x){
long int i,j;
	if(x<=n){
		//printf("linia:%ld\n",x);
		for(j=1; j<=m; j++){
			a[x][j]=a[x][j]*(-1);
			//printf("%ld ",a[x][j]);
		}
		//printf("\n\n");
	}
	
	else {
		//printf("coloana:%ld\n",x);
		for(i=1; i<=n; i++){
			a[i][x-n]=a[i][x-n]*(-1);
			//printf("%ld ",a[i][x-n]);
		}
	}
	
}

long int suma_finala(){
long int i,j,suma=0;
	for(i=1; i<=n; i++){
		for(j=1; j<=m; j++){
			//fprintf(g,"%ld ",a[i][j]);
			suma=suma+a[i][j];
		}
		//fprintf(g,"\n");
	}
	return suma;
}

int main(){
	citire();
	sume();
	for(long i=1; i<=n+m; i++){
		//printf("%ld ",sum[i]);
		if(sum[i]<0){
			//printf("%ld ",i);
			schimba(i);
		}
	}
	maxs=suma_finala();
	fprintf(g,"%ld", maxs);
return 0;
}