Cod sursa(job #759283)

Utilizator SoulSylverAndrei Ghiuzan SoulSylver Data 17 iunie 2012 13:21:56
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.4 kb
#include<iostream>
#include<fstream>
using namespace std;
ifstream in("flip.in");
ofstream out("flip.out");
int main()
{
	int a[16][16]={{0}},N,M,i,j,s,smax,x=0,xmax=0,cnt=0;
	in>>N>>M;
	for(i=0;i<N;i++)
		for(j=0;j<M;j++)
			in>>a[i][j];
	while(cnt<5)
	{
		for(i=0;i<N;i++)
		{
			s=smax=0;
			for(j=0;j<M;j++)
				smax=smax+a[i][j];
			for(j=0;j<M;j++)
				s=s+a[i][j]*-1;
			if(s>smax)
				for(j=0;j<M;j++)
					a[i][j]=a[i][j]*-1;
		}
		for(j=0;j<M;j++)
		{
			s=smax=0;
			for(i=0;i<N;i++)
				smax=smax+a[i][j];
			for(i=0;i<N;i++)
				s=s+a[i][j]*-1;
			if(s>smax)
				for(i=0;i<N;i++)
					a[i][j]=a[i][j]*-1;
		}
		x=0;
		for(i=0;i<N;i++)
			for(j=0;j<M;j++)
				x=x+a[i][j];
		if(xmax<x)
		{
			xmax=x;
			cnt=0;
		}
		else
			cnt++;
	}
	while(cnt<5)
	{
		for(j=0;j<M;j++)
		{
			s=smax=0;
			for(i=0;i<N;i++)
				smax=smax+a[i][j];
			for(i=0;i<N;i++)
				s=s+a[i][j]*-1;
			if(s>smax)
				for(i=0;i<N;i++)
					a[i][j]=a[i][j]*-1;
		}
		for(i=0;i<N;i++)
		{
			s=smax=0;
			for(j=0;j<M;j++)
				smax=smax+a[i][j];
			for(j=0;j<M;j++)
				s=s+a[i][j]*-1;
			if(s>smax)
				for(j=0;j<M;j++)
					a[i][j]=a[i][j]*-1;
		}
		x=0;
		for(i=0;i<N;i++)
			for(j=0;j<M;j++)
				x=x+a[i][j];
		if(xmax<x)
		{
			xmax=x;
			cnt=0;
		}
		else
			cnt++;
	}
	s=0;
	for(i=0;i<N;i++)
			for(j=0;j<M;j++)
				s=s+a[i][j];
	out<<s;
	return 0;
}