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 } void Begin() throws Exception { int cont = 0; while(true) { cont++; // Cada caso comienza con un numero de equipos t entre 1 y 1000 int t = Integer.parseInt(in.readLine()); if(t==0) break; // Si t=0, el proceso termina System.out.println("Scenario #" + cont); // En este mapa se relaciona cada elemento con el equipo al que pertenece Map<Integer, Integer> mapa = new HashMap<Integer, Integer>(); // Para cada uno de los equipos for (int i=0; i<t; i++) { String[] tmp = in.readLine().split("\\s+"); // El primer número de la línea es la cantidad de miembros del equipo int numMiembros = Integer.parseInt(tmp[0]); for (int j = 1; j<=numMiembros; j++) { mapa.put(Integer.parseInt(tmp[j]), i); // Cada miembro se guarda en el mapa } } String instruccion; Queue<Queue> colaE = new LinkedList<Queue>(); // Cola de colas do { // Cada renglón es una instruccion ENQUEUE, DEQUEUE o STOP String[] tmp = in.readLine().split("\\s+"); instruccion = tmp[0]; // Si es ENQUEUE la segunda parte de la instrucción es el valor a encolar if(instruccion.equals("ENQUEUE")) { int valor = Integer.parseInt(tmp[1]); // Valor a encolar int equipo = mapa.get(valor); // Equipo al que pertenece boolean flag = true; // Identifica si en la cola hay algún miembro de su equipo for (Queue<Integer> x : colaE) { if (x.isEmpty()) colaE.remove(x); if (!x.isEmpty()) { // Si hay un miembro del equipo se agrega al final de esa subcola if (mapa.get(x.peek()) == equipo) { x.add(valor); flag = false; break; } } } if(flag) { // Si no hay miembros del equipo en la cola, crea una nueva subcola y se agrega Queue<Integer> temporal = new LinkedList<Integer>(); temporal.add(valor); colaE.add(temporal); } } // Si es DEQUEUE se eliminan las subcolas vacías y se retira el primer elemento if (instruccion.equals("DEQUEUE")) { while (colaE.peek().size() == 0) colaE.remove(); System.out.println(colaE.peek().poll()); } if(instruccion.equals("STOP")) System.out.println(); } while (!instruccion.equals("STOP")); } } }
Soluciones a problemas comunes de programación en lenguaje java.
lunes, diciembre 13, 2010
Cola de Equipo - Problema UVA 540
El problema de colas de equipo se puede resolver en java utilizando una cola de colas. El enunciado del mismo se encuentra en el enlace http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=7&page=show_problem&problem=481
Suscribirse a:
Comentarios de la entrada (Atom)
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...
-
Este problema busca calcular el o los caracteres que más se repiten en una cadena. El enunciado está expuesto en la página http://uva.onli...
-
El algoritmo de ordenación por montículos o Heap Sort recorre el conjunto de elementos desde la posición de la mitad hasta la primera organi...
-
Generación con sustitución Si se quieren generar todas las posibles cadenas que se forman con un determinado número de caracteres, una pri...
nike air max 2019
ResponderBorrarnike air max 270
hermes online
longchamp bags
nike air max
yeezy shoes
cheap jordans
adidas tubular
nike kyrie 5
air jordans
xiaofang20191218
Casinos Near Me - CBSDetroit.com
ResponderBorrarCasinos Near Me · East 용인 출장샵 Windsor, IA · 나주 출장샵 Grand Rapids, MI · Columbus, OH · Dayton, 강원도 출장안마 OH · 의정부 출장마사지 Harrah's Cherokee Casino Resort · 고양 출장마사지 Pittsburgh, PA · Fairfield, MI
yeezy boost 350
ResponderBorrarkyrie shoes
kyrie 8 shoes
off white
hermes outlet
goyard bag
jordan 6
off white
jordan
kyrie 7
supreme new york
ResponderBorrarbape hoodie
supreme
bape
kobe
pg 4
off white jordan 1
off white