Cod sursa(job #1462362)

Utilizator Calina_Cristian_Florin_323CACalina Cristian Florin Calina_Cristian_Florin_323CA Data 17 iulie 2015 20:39:03
Problema Jocul Flip Scor 10
Compilator java Status done
Runda Arhiva de probleme Marime 2.16 kb
import java.io.FileReader;
import java.io.PrintWriter;
import java.util.Scanner;


public class Main {
	public static void main(String[] args) {
		int N,M;
		int [][]matrice;
		Scanner scanner = null;
		try {
			scanner = new Scanner(new FileReader("flip.in"));
			N = scanner.nextInt();
			M = scanner.nextInt();
			matrice = new int [N][M];
			for (int i = 0 ; i < N ; i ++){
				for (int j = 0 ; j < M ; j ++){
					matrice[i][j] = scanner.nextInt();
				}
			}
//			printMatrix(matrice,N,M);
			maxSumFliped(matrice,N,M);
		} catch (Exception e) {
			e.printStackTrace();
		}
		finally{
			if (scanner != null){
				scanner.close();
			}
		}
	}

	private static void maxSumFliped(int[][] matrice, int N, int M) {
		int [] sumaLinii = new int[N];
		int [] sumaCol = new int[M];
//		boolean ok = false;
//		boolean col = false;
//		while (!ok){
//			ok = true;
//			col = false;
			for (int i = 0 ; i < N ; i ++){
				for (int j = 0 ; j < M ; j++){
					sumaLinii[i] += matrice[i][j];
					sumaCol[j] += matrice[i][j];
				}
				if (sumaLinii[i] < 0){
//					ok = false;
					for (int j = 0 ; j < M ; j ++){
						matrice[i][j] *= -1;
					}
				}
			}
//			if (!ok){
//				System.out.println("LINII MODIFICATE");
//				printMatrix(matrice,N,M);
//			}
			for (int k = 0 ; k < M ; k ++){
				if (sumaCol[k] < 0){
//					col = true;
//					ok = false;
					for (int i = 0 ; i < N ; i ++){
						matrice[i][k] *= -1;
					}
				}
			}
//			if (col){
//				System.out.println("COLOANE MODIFICATE");
//				printMatrix(matrice,N,M);
//			}
//		}
		int sum = 0;
		for (int i = 0 ; i < N ; i++){
			for (int j = 0 ; j < M ; j++){
				sum+= matrice[i][j];
			}
		}
		PrintWriter writer;
		try {
			writer = new PrintWriter("flip.out", "UTF-8");
			writer.println(sum);
			writer.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

//	private static void printMatrix(int[][] matrice, int N, int M) {
//		for (int i = 0; i < N; i++) {
//		    for (int j = 0; j < M; j++) {
//		        System.out.print(matrice[i][j] + " ");
//		    }
//		    System.out.print("\n");
//		}
//		 System.out.println();
//	}
}