Pagini recente » Cod sursa (job #1040874) | Cod sursa (job #2746703) | Cod sursa (job #907092) | Cod sursa (job #346751) | Cod sursa (job #2250)
Cod sursa(job #2250)
#include <fstream>
#include <iostream>
#include <cstdlib>
using namespace std;
long tabla[17][17]; //tabla de joc
unsigned int n,m; //dimensiunile tablei de joc
long long smax = 0;
void ReadData ()
{
register unsigned int i,j; //contoare rapide
//citim fisierul de intrare
fstream fin("flip.in", ios::in);
fin >> n;
fin >> m;
for ( i = 0; i < n; ++i )
for ( j = 0; j < m; ++j )
{
fin >> tabla[i][j];
}
fin.close();
}
void WriteData ()
{
fstream fout("flip.out", ios::out);
fout << smax;
fout.close();
}
void ShowData ()
{
register unsigned int i,j;
for ( i = 0; i < n; ++i )
{
for ( j = 0; j < m; ++j )
{
cout << tabla[i][j] << " ";
}
cout << endl << endl;
}
}
long long SumRow (unsigned int i)
{
long long s = 0;
register unsigned int j;
for (j = 0; j < m; j++)
{
s += tabla[i][j];
}
return s;
}
long long SumColumn (unsigned int j)
{
long long s = 0;
register unsigned int i;
for (i = 0; i < n; i++)
{
s += tabla[i][j];
}
return s;
}
void FlipColumn (unsigned int j)
{
register unsigned int i;
for (i = 0; i < m; i++)
{
tabla[i][j] *= -1;
}
}
void FlipRow (unsigned int i)
{
register unsigned int j;
for (j = 0; j < n; j++)
{
tabla[i][j] *= -1;
}
}
void FlipMatrix ()
{
register unsigned int i,j;
bool ok;
do
{
ok = true;
for (i = 0; i < n; i++)
{
long long sr = SumRow (i);
if (sr < 0)
{
ok = false;
FlipRow (i);
}
}
for (j = 0; j < n; j++)
{
long long sc = SumColumn (j);
if (sc < 0)
{
ok = false;
FlipColumn (j);
}
}
} while (!ok);
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
smax += tabla[i][j];
}
}
}
int main(void)
{
ReadData ();
ShowData ();
FlipMatrix ();
WriteData ();
return(0);
}