Cod sursa(job #1462412)

Utilizator Calina_Cristian_Florin_323CACalina Cristian Florin Calina_Cristian_Florin_323CA Data 17 iulie 2015 23:55:37
Problema Jocul Flip Scor 10
Compilator java Status done
Runda Arhiva de probleme Marime 2.12 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 posLine = -1;
		int [] posCol = new int [M];
		boolean ok = false;
		
		while (!ok){
			ok = true;
		
			for (int i = 0 ; i < N ; i ++){
				for (int j = 0 ; j < M ; j++){
					if (sumaLinii[i] < 0){
						ok = false;
						matrice[i][j] *= -1;
						if (posLine != i){
							posLine = i;
							sumaLinii[i] *= -1;
							sumaTotala += 2 * sumaLinii[i];
						}
					}
					if (sumaCol[j] < 0){
						ok = false;
						matrice[i][j] *= -1;
						if (posCol[j] == 0){
							posCol[j] ++;
							sumaCol[j] *= -1;
							sumaTotala += 2 * sumaCol[j];
						}
					}
				}
			}
		
		}
		
		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();
	}
}