Cod sursa(job #789410)

Utilizator DeepGreenBurcea Iulian-Catalin DeepGreen Data 17 septembrie 2012 22:42:40
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.44 kb
#include<iostream>
#include<fstream>
using namespace std;
#define max 20

ifstream f("flip.in");
ofstream g("flip.out");
void citire( int& n, int& m, long int mat[max][max]){
	f>>n>>m;
	for (int i=0;i<n;i++)
		for(int j=0;j<m;j++)
			f>>mat[i][j];
}

void comutare(int n, int m,long int mat[max][max]){
	long int suma,sumaminus;
	for(int i=0;i<n;i++){
		suma=sumaminus=0;
		for(int j=0;j<m;j++){
			suma+=mat[i][j];
			sumaminus=sumaminus-mat[i][j];
		}
		if(sumaminus>suma)
			for(int j=0;j<m;j++)
				mat[i][j]=-mat[i][j];
	}
	for(int i=0;i<m;i++){
		suma=sumaminus=0;
		for(int j=0;j<n;j++){
			suma+=mat[j][i];
			sumaminus=sumaminus-mat[j][i];
		}
		if(sumaminus>suma)
			for(int j=0;j<n;j++)
				mat[j][i]=-mat[j][i];
	}
	for(int i=0;i<n;i++){
		suma=sumaminus=0;
		for(int j=0;j<m;j++){
			suma+=mat[i][j];
			sumaminus=sumaminus-mat[i][j];
		}
		if(sumaminus>suma)
			for(int j=0;j<m;j++)
				mat[i][j]=-mat[i][j];
	}
	for(int i=0;i<m;i++){
		suma=sumaminus=0;
		for(int j=0;j<n;j++){
			suma+=mat[j][i];
			sumaminus=sumaminus-mat[j][i];
		}
		if(sumaminus>suma)
			for(int j=0;j<n;j++)
				mat[j][i]=-mat[j][i];
	}
}

long int suma(int n, int m,long int mat[max][max]){
	long int suma=0;
	for (int i=0;i<n;i++)
		for(int j=0;j<m;j++)
			suma+=mat[i][j];
	return suma;
}

int main(){
	 int n,m;
	 long int mat[max][max];
	 citire(n,m,mat);
	 comutare(n,m,mat);
	 g<<suma(n,m,mat);
	 return  0;

}