Pagini recente » Cod sursa (job #1794246) | Cod sursa (job #2434489) | Cod sursa (job #674015) | Cod sursa (job #2790956) | Cod sursa (job #654891)
Cod sursa(job #654891)
/*
* File: flip.cpp
* Author: Rendszergazda
*
* Created on 2011. december 31., 10:33
*/
#include <cstdlib>
#include <iostream>
#include <fstream>
using namespace std;
int n, m;
int **sz, **osz, *osszeg;
;
void oszinit(int sor, int i, int max) {
while (++max < m) {
// osz[sor][(i | (1 << max))] = (2 * sz[max]);
osz[sor][i | 1 << max] = osz[sor][i ] - 2 * sz[sor][max];
oszinit(sor, i | 1 << max, max);
}
}
int main(int argc, char** argv) {
ifstream myfilein("flip.in");
ofstream myfileout("flip.out");
myfilein >> n >> m;
sz = new int*[n];
osz = new int*[n];
osszeg = new int[1 << m];
for (int i = 0; i < 1 << m; i++)
osszeg[i] = 0;
for (int i = 0; i < n; i++) {
sz[i] = new int[m];
osz[i] = new int[1 << m];
osz[i][0] = 0;
for (int j = 0; j < m; j++) {
myfilein >> sz[i][j];
osz[i][0] += sz[i][j];
}
oszinit(i, 0, -1);
}
for (int i = 0; i < n; i++)
for (int j = 0; j < 1 << m; j++) {
if (osz[i][j] < 0)osz[i][j] *= -1;
osszeg[j] += osz[i][j];
}
// myfileout << n << ' ' << m << '\n';
// for (int i = 0; i < n; i++) {
// myfileout << '\n';
// for (int j = 0; j < m; j++)
// myfileout << sz[i][j] << ' ';
// }
// for (int i = 0; i < n; i++) {
// myfileout << '\n';
// for (int j = 0; j < 1 << m; j++)
// myfileout << osz[i][j] << ' ';
// }
// myfileout << '\n';
// myfileout << '\n';
// for (int j = 0; j < 1 << m; j++)
// myfileout << osszeg[j] << ' ';
int max = 0;
for (int j = 0; j < 1 << m; j++)
if (max < osszeg[j]) max = osszeg[j];
myfileout <<max;
return 0;
}