-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathA238.java
61 lines (50 loc) · 2.13 KB
/
A238.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
import java.util.Scanner;
public class A238 {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
int billetes = sc.nextInt();
while (billetes != 0) {
int ladrones = sc.nextInt();
// Creo una lista de listas de enteros para ir almacenando los billetes que se
// dan a cada ladron.
List<List<Integer>> listaLadrones = new LinkedList<>();
// Sabiendo el numero de ladrones, creo una lista para cada uno de ellos.
for (int i = 0; i < ladrones; i++) {
List<Integer> lista = new LinkedList<>();
listaLadrones.add(lista);
}
// Creo una cola de billetes y la cargo con los billetes.
// Utilizo una cola para ir repartiendo los billetes de modo que el primero en
// entrar por teclado es el primero en repartirse.
Queue<Integer> monton = new LinkedList<>();
for (int i = 0; i < billetes; i++) {
monton.offer(sc.nextInt());
}
// Vacio la cola repartiendo los billetes entre cada una de las listas de los
// ladrones.
int contador = 0;
while (!monton.isEmpty()) {
listaLadrones.get(contador).add(monton.poll());
contador = (contador < ladrones - 1) ? ++contador : 0;
}
// Recorro la lista de listas, y para cada una de ellas calculo el total y
// genero la impresión.
for (List<Integer> lista : listaLadrones) {
int total = 0;
for (Integer billete : lista) {
total += billete;
}
System.out.print(total + ":");
for (int i = 0; i < lista.size(); i++) {
System.out.print(" " + lista.get(i));
}
System.out.println();
}
System.out.println("---");
billetes = sc.nextInt();
}
}
}