Cod sursa(job #3338380)

Utilizator kojoCojocaru Aurelian kojo Data 2 februarie 2026 21:46:01
Problema Jocul Flip Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include<fstream>

using namespace std;

ifstream f("flip.in");
ofstream g("flip.out");

long a[17][17],b[17],k = 0;
int m,n;
long suma_poz(int x,int y)
{long s=0;
for(int i=1;i<=m;i++)
if(a[x][i] >0) 
 s+=a[x][i];
  
for(int i=1;i<=n;i++)
  if(a[i][y] >0)
  s+=a[i][y];
  
  if(a[x][y]>0)
  s-=a[x][y];
  
	
return s;
}

long suma_neg(int x,int y)
{long s=0;
for(int i=1;i<=m;i++)
if(a[x][i] <0) 
 s+=a[x][i];
  
for(int i=1;i<=n;i++)
  if(a[i][y] <0)
  s+=a[i][y];
  
  if(a[x][y]<0)
  s-=a[x][y];
  
	
return s;
}

void maneta(int x, int y)
{
for(int i=1;i<=m;i++)
  a[x][i]*=-1;
  
for(int i=1;i<=n;i++)
  a[i][y]*=-1;
  
  a[x][y]*=-1;
}
long int su(int x)
{
long s=0;
for(int i=1;i<=n;i++)
  s+=a[x][i];
return s;
}
void main()
{
f>>m>>n;
for(int i=1;i<=m;i++)
	for(int j=1;j<=n;j++)
		f>>a[i][j];
		
int gasit = 1;

while(gasit ==1)
{gasit=0;
for(i=1;i<=n;i++)
{
	for(int j=1;j<=n;j++)
	{
		if(suma_poz(i,j) < -1*suma_neg(i,j))
		{
			maneta(i,j);
			gasit = 1;
		}
	}
}

}

for(int i=1;i<=m;i++)
	for(int j=1;j<=n;j++)
		k+=a[i][j];
		
g<<k;
}