Cod sursa(job #277213)

Utilizator TH3_ON3Cazacu Bogdan TH3_ON3 Data 11 martie 2009 16:25:49
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 kb
#include <stdio.h>
//#include <iostream>
//#include <conio.h>
//using namespace std;
int m,n,i,j,v[100][100],poz,neg,sin,ok;
long long s;
//bool ok;
int suma()
{
	s=0;
	for(i=1;i<n+1;i++)
		for(j=1;j<m+1;j++)
			s+=v[i][j];
	return s;
}
void citire()
{
	FILE *pfile=fopen("flip.in","r");
	fscanf(pfile, "%d %d", &n, &m);
	for(i=1;i<n+1;i++)
		for(j=1;j<m+1;j++)
			fscanf(pfile, "%d ",&v[i][j]);
	fclose(pfile);
}
void afisare()
{
	FILE *pfileout=fopen("flip.out","w");
	fprintf(pfileout, "%ld\n",s);
	//for(i=1;i<n+1;i++)
	//{
		//for(j=1;j<m+1;j++)
			//fprintf(pfileout, "%d ",v[i][j]);
		//fprintf(pfileout, "\n");
	//}
	fclose(pfileout);
}
void comutare_coloana(int j)
{
	for(i=1;i<n+1;i++)
			v[i][j]*=(-1);
}
void comutare_rand(int i)
{
	for(j=1;j<m+1;j++)
			v[i][j]*=(-1);
}
void gg()
{
    ok=0;
    while(ok==0)
    {
	ok=1;
	for(i=1;i<n+1;i++)
	{
		neg=0; poz=0;
		for(j=1;j<m+1;j++)
		{
			if(v[i][j]<0) neg+=((-1)*v[i][j]);
			else poz+=v[i][j];
		}
		if(neg>poz) { comutare_rand(i); ok=0; }
		//cout<<neg<<" "<<poz<<"\n";
	}
	for(j=1;j<m+1;j++)
	{
		neg=0; poz=0;
		for(i=1;i<n+1;i++)
		{
			if(v[i][j]<0) neg+=((-1)*v[i][j]);
			else poz+=v[i][j];
		}
		if(neg>poz) { comutare_coloana(j); ok=0; }
	}
    }
}
int main()
{
	citire();
	sin=suma();
	gg();
	suma();
	if (s<sin) s=sin;
	afisare();
	//getch();
	return 0;
}