Cod sursa(job #820075)

Utilizator cosmin1123Didii Theodor-Cosmin cosmin1123 Data 19 noiembrie 2012 23:49:44
Problema Jocul Flip Scor 20
Compilator c Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <stdio.h>
#include <stdlib.h>
void flip( int a[],int dim)
{
	int i;
	for( i = 0; i < dim; i++)
		a[i] = a[i] * (-1);	
}

void flipCol( int *a[],int j,int dim)
{
	int i;
	for( i = 0; i < dim; i++)
		a[i][j] = a[i][j] * (-1);	
}

int suma( int a[], int dim){
	int i, sum = 0;

	for( i = 0; i < dim; i++)
		sum += a[i];
	return sum;
}

int sumaCol( int *a[], int dim, int j){
	int i, sum = 0;

	for( i = 0; i < dim; i++)
		sum += a[i][j];
	return sum;
}

int main(){
    freopen("flip.in", "r", stdin);
    freopen("flip.out", "w", stdout);
	int n ,m , sum1 = 0,sum2 =0, i, j;
	
	scanf("%d",&m);
	scanf("%d",&n);
	int **v;
	v = malloc(m * sizeof(int*));
	for( i = 0; i < m; i++)
		v[i] = malloc( n * sizeof(int*));
	for( i = 0; i < m; i++){
		for( j = 0; j < n; j++){
			scanf("%d",v[i] + j);
		}
	}
	
	for( i = 0; i < m; i++){
		if( suma(v[i], n) < 0){
			flip(v[i], n);
	}
	}
	
	for( i = 0; i < n; i++){
		if( sumaCol(v, m,i) < 0)
			flipCol(v,i,m);
	}
	for( i = 0; i < m; i++){
		sum1 += suma(v[i], n);
		
		}	
	
	for( i = 0; i < n; i++){
		if( sumaCol(v, m,i) < 0)
			flipCol(v,i,m);
	}
	for( i = 0; i < m; i++){
		if( suma(v[i], n) < 0){
			flip(v[i], n);
	}
	}
	
	for( i = 0; i < m; i++){
		sum2 += suma(v[i], n);
		
		}	

	if(sum1 > sum2)
		printf("%d",sum1);
	else
		printf("%d",sum2);

return 0;
}