Thursday, January 05, 2012

Solucion a 102 - Ecological Bin Packing [http://uva.onlinejudge.org]

Solucion a 102 - Ecological Bin Packing [http://uva.onlinejudge.org]
El enunciado esta en el siguiente link enunciado

import java.util.Scanner;

/**
 * 102 - Ecological Bin Packing [http://uva.onlinejudge.org]
 *
 * @author BreakDark
 * @version 1.0 beta
 */
// ACEPTADO!!! xD
public class Main {
    public static void main(String[] args) {
        Scanner Lee; // Para leer los datos de entrada
        int[][] botellas = new int[3][3]; // para las botellas
        byte[][] combinaciones = { { 0, 1, 2 }, { 0, 2, 1 }, { 1, 0, 2 },
                { 1, 2, 0 }, { 2, 0, 1 }, { 2, 1, 0 } };
        String[] combiColores = { "BCG", "BGC", "CBG", "CGB", "GBC", "GCB" }; // combinacion
                                                                                // de
                                                                                // colores
        byte i, j; // para los bucles
        long may, suma; // para hallar la combinacion que necesita menos cambios
        byte indCom; // para la mejor combinacion

        // AQUI INICIA EL PROGRAMA
        Lee = new Scanner(System.in);
        while (Lee.hasNext()) {
            // leemos los datos
            for (i = 0; i < 3; i++) {
                botellas[i][0] = Lee.nextInt();
                botellas[i][2] = Lee.nextInt();
                botellas[i][1] = Lee.nextInt();
            }
            // buscamos la mejor combinacion
            may = 0;
            indCom = 0;
            for (i = 0; i < 6; i++) {
                suma = botellas[0][combinaciones[i][0]]
                        + botellas[1][combinaciones[i][1]]
                        + botellas[2][combinaciones[i][2]];
                if (suma > may) {
                    may = suma;
                    indCom = i;
                }
            }
            // sumamos todos excepto los indices de la mejor combinacion
            suma = 0;
            for (i = 0; i < 3; i++)
                for (j = 0; j < 3; j++) {
                    if (j != combinaciones[indCom][i])
                        suma += botellas[i][j];
                }
            // mostramos el resultado
            System.out.println(combiColores[indCom] + " " + suma);
        }
    }
}

No comments: