Cod sursa(job #1462383)

Utilizator Calina_Cristian_Florin_323CACalina Cristian Florin Calina_Cristian_Florin_323CA Data 17 iulie 2015 21:44:51
Problema Jocul Flip Scor 10
Compilator java Status done
Runda Arhiva de probleme Marime 2.06 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();
			int [] sumaLinii = new int[N];
			int [] sumaCol = new int[M];
			int sumaTotala = 0;
			matrice = new int [N][M];
			for (int i = 0 ; i < N ; i ++){
				for (int j = 0 ; j < M ; j ++){
					matrice[i][j] = scanner.nextInt();
					sumaLinii[i] += matrice[i][j];
					sumaCol[j] +=matrice[i][j];
					sumaTotala += matrice[i][j];
				}
			}
			doit(matrice,N,M,sumaLinii,sumaCol,sumaTotala);
		} catch (Exception e) {
			e.printStackTrace();
		}
		finally{
			if (scanner != null){
				scanner.close();
			}
		}
	}

	private static void doit(int[][] matrice, int N, int M, int[] sumaLinii, int[] sumaCol, int sumaTotala) {
		
//		printMatrix(matrice,N,M);
		int auxLinie , auxCol;
		int posLine = -1;
		int [] posCol = new int [M];
		
		for (int i = 0 ; i < N ; i ++){
			for (int j = 0 ; j < M ; j++){
				if (sumaLinii[i] < 0){
					matrice[i][j] *= -1;
					if (posLine != i){
						posLine = i;
						auxLinie = sumaLinii[i] * -1;
						sumaTotala += 2 * auxLinie;
					}
				}	
				if (sumaCol[j] < 0){
					matrice[i][j] *= -1;
					if (posCol[j] == 0){
						posCol[j] ++;
						auxCol = sumaCol[j] * -1;
						sumaTotala += 2 * auxCol;
					}
				}
			}
		}
		
//		printMatrix(matrice,N,M);
		
//		System.out.println(sumaTotala);
		
		PrintWriter writer;
		try {
			writer = new PrintWriter("flip.out", "UTF-8");
			writer.println(sumaTotala);
			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();
//	}
//}