Cod sursa(job #1246409)

Utilizator olahusOlar Razvan olahus Data 21 octombrie 2014 00:52:47
Problema Jocul Flip Scor 20
Compilator c Status done
Runda Arhiva de probleme Marime 1.23 kb

#include <stdio.h>
#include <stdlib.h>

int main() {
	
	FILE *f, *g;
	
	f = fopen("flip.in", "r");
	int n, m;
	fscanf(f, "%d", &n);
	fscanf(f, "%d", &m);
	
	int **a, i ,j;
	a = (int **) malloc(n * sizeof(int));
	for(i = 0; i < n; i++)
		a[i] = (int *)malloc(m * sizeof(int));
	
	for(i=0; i<n; i++) 
		for(j=0; j<m; j++)
			fscanf(f, "%d", &a[i][j]);
	
	//		
	//for(i=0; i<n; i++) {
	//	for(j=0; j<m; j++) {
	//		printf("%d ", a[i][j]);
	//	}
	//	printf("\n");
	//}
	//
	
	int sumPL, sumNL, sumPC, sumNC;
	for(i=0; i<n; i++) {
		sumPL = 0;
		sumNL = 0;
		for(j=0; j<m; j++) {
			sumPL += a[i][j];
			sumNL += (-1) * a[i][j];
		}
		if(sumPL < sumNL)
			for(j=0; j<m; j++) {
				//printf("linie %d\n", i+1);
				a[i][j] = (-1) * a[i][j];
			}
	}
	
	for(j=0; j<m; j++) {
		sumPC = 0;
		sumNC = 0;
		for(i=0; i<n; i++) {
			sumPC += a[i][j];
			sumNC += (-1) * a[i][j];
		}
		if(sumPC < sumNC)
			for(i=0; i<n; i++) {
				//printf("coloana %d\n", j+1);
				a[i][j] = (-1) * a[i][j];
			}
	}
	
	int sum = 0;
	for(i=0; i<n; i++) 
		for(j=0; j<m; j++)
			sum += a[i][j];
		
	g = fopen("flip.out", "w");
	fprintf(g, "%d", sum);
	fclose(g);
	
	for(i=0; i<n; i++)
		free(a[i]);
	free(a);
	return 0;
}