Pagini recente » Cod sursa (job #2307441) | Cod sursa (job #1949027) | Cod sursa (job #1643343) | Cod sursa (job #1177803) | Cod sursa (job #1213049)
#include <iostream>
#include <fstream>
#include <stdlib.h>
using namespace std;
const int dim = 20, OO = (1<<31)-1;
int N, M, **A, OptimumSum;
void ReadInput() {
ifstream fi("flip.in");
if (!fi.is_open()) {
cout << "File \"flip.in\" could not be found";
exit(EXIT_FAILURE);
}
fi >> N >> M;
A = new int*[N];
for (int i = 0; i < N; i++)
A[i] = new int[M];
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
fi >> A[i][j];
}
}
fi.close();
}
void FindOptimumSum() {
int ChosenSubsetMask = 0;
int Sum, ColumnSum;
OptimumSum = -OO;
while (ChosenSubsetMask != 1<<N) {
Sum = 0;
for (int col = 0; col < M; col++) {
ColumnSum = 0;
for (int line = 0; line < N; line++) {
if ((ChosenSubsetMask >> line) & 1)
ColumnSum -= A[line][col];
else
ColumnSum += A[line][col];
}
if (ColumnSum < 0)
Sum -= ColumnSum;
else
Sum += ColumnSum;
}
OptimumSum = max (OptimumSum, Sum);
ChosenSubsetMask++;
}
}
void WriteOutput() {
ofstream fo("flip.out");
fo << OptimumSum;
fo.close();
}
int main() {
ReadInput();
FindOptimumSum();
WriteOutput();
return 0;
}