Pagini recente » Cod sursa (job #2861468) | Cod sursa (job #278943) | Cod sursa (job #2098747) | Cod sursa (job #1243708) | Cod sursa (job #454372)
Cod sursa(job #454372)
//Gigel a descoperit un nou joc pe care l-a numit "Flip". Acesta se joaca pe o tabla dreptunghiulara de dimensiuni N*M care
//contine numere intregi. Fiecare linie si fiecare coloana are un comutator care schimba starea tuturor elementelor de pe
//acea linie sau coloana, inmultindu-le cu -1. Scopul jocului este ca pentru o configuratie data a tablei de joc sa se
//actioneze asupra liniilor si coloanelor astfel incat sa se obtina o tabla cu suma elementelor cat mai mare.
#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
FILE *f=fopen("flip.in","rt");
FILE *g=fopen("flip.out","wt");
long int x[17][17]={0},i,j,n,m,efectuat,lin,col;
long long int suma,min;
fscanf (f,"%ld%ld",&n,&m);
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
fscanf (f,"%ld",&x[i][j]);
do
{
min=1;lin=0;col=0;
efectuat=1;
for (i=1;i<=n;i++)
{
suma=0;
for (j=1;j<=m;j++)
suma+=x[i][j];
if (suma<min)
{
min=suma;
lin=i;
efectuat=0;
}
}
for (j=1;j<=m;j++)
{
suma=0;
for (i=1;i<=n;i++)
suma+=x[i][j];
if (suma<min)
{
min=suma;
col=j;
efectuat=0;
}
}
if (col>0)
for (i=1;i<=n;i++)
x[i][col]=-x[i][col];
else
for (j=1;j<=m;j++)
x[lin][j]=-x[lin][j];
}
while (efectuat==0);
suma=0;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
suma+=x[i][j];
fprintf (g,"%lld",suma);
fclose(f);
fclose(g);
return 0;
}