Cod sursa(job #622025)

Utilizator ArtyPaulpsadkpako ArtyPaul Data 17 octombrie 2011 11:01:42
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<iostream.h>
#include<fstream.h>
int v[17][17],n,m,x[17],y[17];
void citire(){
	ifstream fin("flip.in");
	fin>>n>>m;
	int i,j;
	for(i=1;i<=n;i++){
		for(j=1;j<=m;j++)
			fin>>v[i][j];
	}
	fin.close();
}
void sum(){
	int i,j;
	for(i=1;i<=n;i++){
		for(j=1;j<=m;j++){
			x[i]+=v[i][j];
			y[j]+=v[i][j];
		}
	}
}
void comc(int k){
	int i;
	for(i=1;i<=n;i++){
		v[i][k]=-v[i][k];
	}
	y[k]=-y[k];
	for(i=1;i<=n;i++)
		x[i]=x[i]+2*v[i][k];
}
void coml(int k){
	int i;
	for(i=1;i<=m;i++){
		v[k][i]=-v[k][i];
	}
	x[k]=-x[k];
	for(i=1;i<=n;i++){
		y[i]+=2*v[k][i];
	}
}
int main(){
	citire();
	sum();
	int i,j;
	
	int ok=1;
	do{
		ok=1;
		for(i=1;i<=m;i++){
			if(y[i]<0){ comc(i);
			ok=1;
			}
		}
	}
	while(ok==0);
	do{
		ok=1;
		for(i=1;i<=n;i++){
			if(x[i]<0){ coml(i);
			ok=0;
			}
		}}
		while(ok==0);
	
	int s=0;
	for(i=1;i<=n;i++){
		for(j=1;j<=m;j++){
			s+=v[i][j];
		}
	}
	cout<<s;
	return 0;
}