Pagini recente » Cod sursa (job #701796) | Cod sursa (job #55073) | Cod sursa (job #2979173) | Cod sursa (job #408687) | Cod sursa (job #613996)
Cod sursa(job #613996)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int main()
{
int n, m, total = 0;
ifstream indata;
indata.open("flip.in");
ofstream outdata;
outdata.open("flip.out");
indata>>n>>m;
int mat[n][m];
vector< vector <int> > sum; // sum[0] ist fur Spalten und sum[1] ist fur Reihen
sum.resize(2);
sum[0].resize(m);
sum[1].resize(n);
for (int i = 0; i < 2; i++)
for (int j = 0; j < (i==0?m:n); j++)
sum[i][j] = 0;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
{
indata>>mat[i][j];
sum[0][j] += mat[i][j];
sum[1][i] += mat[i][j];
}
//100% perfekt bisher
for (int i = 0; i < m; i++)
if (sum[0][i] < 0)
{
sum[0][i] = 0;
for (int j = 0; j < n; j++)
{
sum[1][j] -= mat[j][i];
mat[j][i] *= -1;
sum[0][i] += mat[j][i];
sum[1][j] += mat[j][i];
}
}
//das von oben ist OK!
for (int i = 0; i < n; i++)
if (sum[1][i] < 0)
{
sum[1][i] = 0;
for (int j = 0; j < m; j++)
{
sum[0][j] -= mat[i][j];
mat[i][j] *= -1;
sum[1][i] += mat[i][j];
sum[0][j] += mat[i][j];
}
}
for (int i = 0; i < m; i++)
total += sum[0][i];
outdata<<total;
}