Cod sursa(job #1373776)

Utilizator thaghostAndrei Dulceanu thaghost Data 4 martie 2015 20:33:13
Problema Jocul Flip Scor 60
Compilator java Status done
Runda Arhiva de probleme Marime 1.33 kb
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) throws IOException {
		Scanner in = new Scanner(new FileInputStream("flip.in"));
		PrintWriter out = new PrintWriter("flip.out");

		int n = in.nextInt();
		int m = in.nextInt();

		int[][] a = new int[n][m];
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < m; j++) {
				a[i][j] = in.nextInt();
			}
		}
		in.close();

		int max = Integer.MIN_VALUE;
		for (int i = 0; i < Math.pow(2, m); i++) {
			int[][] tmp = new int[n][m];
			for (int k=0;k<n;k++) {
				tmp[k] = Arrays.copyOf(a[k], a[k].length);
			}
			
			int crtSum = 0;

			for (int j = 0; j < m; j++) {
				int bit = i & (1 << j);

				if (bit > 0) {
					flipColumn(tmp, j, n, m);
				}
			}

			for (int line = 0; line < n; line++) {
				int sum = 0;

				for (int j = 0; j < m; j++) {
					sum += tmp[line][j];
				}

				if (sum < 0) {
					sum = sum * (-1);
				}

				crtSum += sum;
			}

			if (crtSum > max) {
				max = crtSum;
			}
		}

		out.println(max);
		out.close();
	}

	private static void flipColumn(int[][] a, int col, int n, int m) {
		for (int i = 0; i < n; i++) {
			a[i][col] = a[i][col] * (-1);
		}
	}
}