Cod sursa(job #1462374)

Utilizator Calina_Cristian_Florin_323CACalina Cristian Florin Calina_Cristian_Florin_323CA Data 17 iulie 2015 21:17:07
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.77 kb
#include <iostream>
#include <stdio.h>
#include <stdlib.h>

using namespace std;

//void printMatrix(int **matrice, int N, int M) {
//	for (int i = 0; i < N; i++) {
//	    for (int j = 0; j < M; j++) {
//	        printf("%d ",matrice[i][j]);
//	    }
//	   printf("\n");
//	}
//	printf("\n");
//}

void maxSumFliped(int **matrice,int N, int M){
	int *sumaLinii;
	sumaLinii = (int*) calloc (N,sizeof(int));
	int *sumaCol = new int[M];
	sumaCol = (int *) calloc(M,sizeof(int));

	bool ok = false;
//	bool col = false;
	while (!ok){
		ok = true;
//		col = false;
		for (int i = 0 ; i < N ; i ++){
			for (int j = 0 ; j < M ; j++){
				sumaLinii[i] += matrice[i][j];
				sumaCol[j] += matrice[i][j];
			}
			if (sumaLinii[i] < 0){
				ok = false;
				for (int j = 0 ; j < M ; j ++){
					matrice[i][j] *= -1;
				}
			}
		}
//		if (!ok){
//			cout<<"Linii modificate"<<endl;
//			printMatrix(matrice,N,M);
//		}
		for (int k = 0 ; k < M ; k ++){
			if (sumaCol[k] < 0){
//				col = true;
				ok = false;
				for (int i = 0 ; i < N ; i ++){
					matrice[i][k] *= -1;
				}
			}
		}
//		if (col){
//			cout<<"Coloane modificate"<<endl;
//			printMatrix(matrice,N,M);
//		}
	}
	int sum = 0;
	for (int i = 0 ; i < N ; i++){
		for (int j = 0 ; j < M ; j++){
			sum+= matrice[i][j];
		}
	}
	FILE *pFile = fopen("flip.out","w");
	fprintf(pFile,"%d",sum);
}

int main (int argc , char *argv[]){
	int N;
	int M;
	FILE *pFile = fopen("flip.in", "r");
	fscanf(pFile,"%d %d",&N,&M);

	int **matrice = new int*[N];
	for (int i = 0 ; i < N ; i++){
		matrice[i] = new int[M];
	}

	for (int i = 0 ; i < N ; i++){
		for (int j = 0; j < M ; j++){
			fscanf(pFile,"%d",&matrice[i][j]);
		}
	}
//	printMatrix(matrice,N,M);
	maxSumFliped(matrice,N,M);
}