viernes, diciembre 17, 2010

Calculo de Salarios - Problema UVA 10295

Este problema calcula el valor del salario para un cargo teniendo en cuenta la ocurrencia de determinadas palabras claves dentro del texto de la descripción del cargo. El enunciado del problema se encuentra en la dirección http://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=1236

import java.io.*;
import java.util.*;

class Main {
    static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

    public static void main(String args[]) throws Exception {
        Main myWork = new Main();   // create a dinamic instance
        myWork.Begin();             // the true entry point
        System.exit(0);
    }

    void Begin() throws Exception {
        Map<String, Integer> mapa = new HashMap<String, Integer>();
        String[] tmp = in.readLine().split("\\s+");
        int cantidadPalabras = Integer.parseInt(tmp[0]);
        int cantidadTextos   = Integer.parseInt(tmp[1]);
        for(int i=0; i<cantidadPalabras; i++) {
            tmp = in.readLine().split("\\s+");
            String keyword = tmp[0];
            int      costo = Integer.parseInt(tmp[1]);
            mapa.put(keyword, costo);
        }
        for(int i=0; i<cantidadTextos; i++) {
            String texto = "";
            while(true) {
                String linea = in.readLine();
                if(linea.charAt(0)=='.' && linea.length()==1) break;
                texto+=(" " + linea);
            }
            int salario = 0;
            tmp = texto.split(("\\s+"));
            for(String x: tmp) if(mapa.containsKey(x)) salario+=mapa.get(x);
            System.out.println(salario);
        }
    }
}

1 comentario:

Multiprocesamiento recursivo en JAVA 7

Una de las estrategias de diseño de algoritmos más comunes es la de "divide y vencerás", en la cual, un problema de tamaño relativ...