Pagini recente » Cod sursa (job #1987315) | Cod sursa (job #1676226) | Cod sursa (job #939534) | Cod sursa (job #2464582) | Cod sursa (job #2462856)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
#define MAX_SIZE 17
int n, m, i, j, k, nextline, nextcolumn, summin, index, done, suma, lastline = -1, lastcolumn = -1;
int table[MAX_SIZE][MAX_SIZE];
int sumlin[MAX_SIZE];
int sumcol[MAX_SIZE];
bool samelines = false, samecolumns = false;
int SearchLine() {
summin = sumlin[1];
for(i = 2; i <= n; i++) {
if(sumlin[i] < summin) {
summin = sumlin[i];
index = i;
}
}
if(summin < 0)
return index;
return -1;
}
int SearchColumn() {
summin = sumcol[1];
for(j = 2; j <= m; j++) {
if(sumcol[j] < summin) {
summin = sumcol[j];
index = j;
}
}
if(summin < 0)
return index;
return -1;
}
void ChangeLine(int nextline) {
sumlin[nextline] = -sumlin[nextline];
for(j = 1; j <= m; j++) {
table[nextline][j] = -table[nextline][j];
sumcol[j] += 2*table[nextline][j];
}
}
void ChangeColumn(int nextcolumn) {
sumcol[nextcolumn] = -sumcol[nextcolumn];
for(i = 1; i <= n; i++) {
table[i][nextcolumn] = -table[i][nextcolumn];
sumlin[i] += 2*table[i][nextcolumn];
}
}
int main()
{
f >> n >> m;
for(i = 1; i <= n; i++) {
for(j = 1; j <= m; j++) {
f >> table[i][j];
sumlin[i] += table[i][j];
sumcol[j] += table[i][j];
}
}
while(done != 2) {
done++;
if(nextcolumn == lastcolumn) {
if(nextline == lastline) {
break;
}
}
if(k % 2 == 0) {
lastline = nextline;
nextline = SearchLine();
if(nextline != -1) {
done = 0;
ChangeLine(nextline);
if(lastline == nextline)
samelines = true;
else samelines = false;
}
} else {
lastcolumn = nextcolumn;
nextcolumn = SearchColumn();
if(nextcolumn != -1) {
done = 0;
ChangeColumn(nextcolumn);
if(lastline == nextline)
samecolumns = true;
else samecolumns = false;
}
}
if(samelines)
if(samecolumns)
done = 2;
k++;
}
for(i = 1; i <= n ;i++) {
for(j = 1; j <= m; j++)
cout << table[i][j] << ' ';
cout << '\n';
}
for(i = 1; i <= n; i++) {
suma += sumlin[i];
}
g << suma;
return 0;
}