Pagini recente » Cod sursa (job #2920345) | Cod sursa (job #731885) | Cod sursa (job #461385) | Cod sursa (job #1619246) | Cod sursa (job #1092120)
/**
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 <iostream>
#include <fstream>
#define dMAX 16
using namespace std;
int suma(int t[][dMAX], int n, int m)
{
int i, j, s = 0;
for(i = 0; i < n; i++)
for(j = 0; j < m; j++)
s += t[i][j];
return s;
}
void comutaLinie(int t[][dMAX], int n, int m, int k)
{
int j;
for(j = 0; j < m; j++)
t[k][j] = -t[k][j];
}
void comutaColoana(int t[][dMAX], int n, int m, int k)
{
int i;
for(i = 0; i < n; i++)
t[i][k] = -t[i][k];
}
void afisare(int t[][dMAX], int n, int m)
{
int i, j;
for(i = 0; i < n; i++)
{
for(j = 0; j < m; j++)
cout << t[i][j] << " ";
cout << "\n";
}
}
int main()
{
ifstream f("flip.in");
ofstream g("flip.out");
int n, m, i, j, t[dMAX][dMAX], smax, scurenta;
f >> n; f >> m;
for(i = 0; i < n; i++)
for(j = 0; j < m; j++)
f >> t[i][j];
smax = suma(t, n, m);
for(i = 0; i < n; i++)
{
comutaLinie(t, n, m, i);
for(j = 0; j < m; j++)
{
comutaColoana(t, n, m, j);
scurenta = suma (t, n, m);
if(smax < scurenta)
smax = scurenta;
comutaColoana(t, n, m, j);
}
comutaLinie(t, n, m, i);
}
g << smax;
f.close();
g.close();
return 0;
}