Pagini recente » Cod sursa (job #409604) | Cod sursa (job #1719829) | Cod sursa (job #2528382) | Cod sursa (job #2338993) | Cod sursa (job #1331629)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter;
/**
* Problema 002 - Jocul Flip
*
* @author Harciog
*/
public class Main {
static int mMaxLines;
static int mMaxColumns;
static int[][] mData;
static int[] mStack = new int[16];
static int mResult = -100000000;
public static void main(String args[]) throws IOException {
// read data
BufferedReader br = new BufferedReader(new FileReader("flip.in"));
String lineAsString = br.readLine();
String[] values = lineAsString.split(" ");
mMaxLines = Integer.parseInt(values[0]);
mMaxColumns = Integer.parseInt(values[1]);
mData = new int[mMaxLines][mMaxColumns];
for (int line = 0; line < mMaxLines; line++) {
lineAsString = br.readLine();
values = lineAsString.split(" ");
for (int column = 0; column < values.length; column++) {
mData[line][column] = Integer.parseInt(values[column]);
}
}
back(0);
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("flip.out"), "utf-8"));
writer.write(String.valueOf(mResult));
writer.close();
}
private static void back(int step) {
if (step != mMaxLines) {
for (int i = 0; i <= 1; i++) {
mStack[step] = i;
back(step + 1);
}
} else {
int[] sumCol = new int[mMaxColumns];
for (int l = 0; l < mMaxLines; l++) {
for (int c = 0; c < mMaxColumns; c++) {
sumCol[c] += mStack[l] == 0 ? mData[l][c] : -mData[l][c];
}
}
int res = 0;
for (int c = 0; c < mMaxColumns; c++) {
res += sumCol[c] > 0 ? sumCol[c] : -sumCol[c];
}
if (res > mResult) {
mResult = res;
}
}
}
}