Cod sursa(job #1731557)

Utilizator LauraTudorTudor Laura LauraTudor Data 19 iulie 2016 11:33:54
Problema Jocul Flip Scor 0
Compilator java Status done
Runda Arhiva de probleme Marime 1.95 kb
import java.io.*;
import java.util.*;
public class Main {

	public static void main(String[] args) {
		try{
			Scanner scanner = new Scanner(new File("flip.in"));
			int [][] matrix = new int[20][20];
			int [][] workMatrix = new int [20][20];
			
			int n, m,i,j;
			n = scanner.nextInt();
			m = scanner.nextInt();
			System.out.println(n + " " + m);
			for (i = 0 ; i < n; i++)
				for (j = 0 ; j < m; j++)
					matrix[i][j] = scanner.nextInt();
			//for (i = 0; i < n; i++) {
			//	for (j = 0; j < m; j++)
			//		System.out.print(matrix[i][j] + " ");
			//	System.out.println();
			//}
			if(m > n) {
				int aux;
				for(i = 0; i < m; i++) 
					for (j = i + 1; j < m ; j++){
						aux = matrix[i][j];
						matrix[i][j]=matrix[j][i];
						matrix[j][i] = aux;
					}
				aux = n;
				n = m;
				m = aux;
			}
			
			//for (i = 0; i < n; i++) {
			//	for (j = 0; j < m; j++)
			//		System.out.print(matrix[i][j] + " ");
			//	System.out.println();
			//}
			
			int flag = (1 << m) -1;
			int graterSum = 0;
			int max = 0;
			
			while (flag >= 0) {
				for ( i = 0; i< m; i++){
					int toMultiply = (flag & (1<<(m-i-1))) > 0 ? -1 : 1; 
					//System.out.print(toMultiply+ " ");
					for ( j = 0 ; j < n; j++ ){
						workMatrix[j][i] = matrix[j][i] * toMultiply;
					}
					
				}
				//System.out.println();
				graterSum =  0;
				for (i = 0; i < n; i++) {
					int sum = 0;
					for (j = 0; j < m; j++){	
						//System.out.print(workMatrix[i][j] + " ");
						sum += workMatrix[i][j];
					}
					graterSum += (sum > 0 ? sum : -sum);
					//System.out.println(graterSum + "\n");
				}
				//System.out.println();
				flag -- ;
				if (graterSum > max)
					max = graterSum;
				
			}
			File fout = new File("flip.out");
			FileWriter out = new FileWriter(fout);
			out.write(String.valueOf(max));
			System.out.print(max);
			
			out.close();
			scanner.close();
		} catch( Exception e) {
			
		}
	}
}