import java.util.BitSet;
import java.util.PriorityQueue;
import java.util.Scanner;
/**
* Solución al problema: 10002 - El inspector [http://acm.cs.buap.mx]
*
* @author BreakDark
* @version 1.0b 17 feb. 2017
*/
// ACEPTADO!!! xD
public class Main {
public static void main(String[] args) {
Scanner Lee; // para leer los datos de entrada
int n; // numero de casos de prueba
String p; // nombre de la poblacion
String s; // informacion de los cultivos
// AQUI INICIA EL PROGRAMA
Lee = new Scanner(System.in);
n = Integer.parseInt(Lee.nextLine());
while (n-- > 0) {
p = Lee.nextLine();
s = Lee.nextLine();
System.out.print(procesar(p, s));
}
Lee.close();
}
/**
* Metodo que resueleve el problema
*
* @param p
* Nombre de la poblacion
* @param s
* Informacion de los cultivos
*/
static String procesar(String p, String s) {
String resp = "";
// contamos los cultivos
int dim = 'z' - 'a' + 1, i;
BitSet tipoCultivos = new BitSet(dim - 1);
char letra;
int d = 0; // desconocidos
int[] cultivos = new int[dim];
for (i = 0; i < s.length(); i++) {
letra = s.charAt(i);
if (letra != '*') {
tipoCultivos.set(letra - 'a');
cultivos[letra - 'a']++;
} else
d++;
}
resp += "POBLACION: " + p + "\n";
resp += "TIPOS DE CULTIVOS: " + tipoCultivos.cardinality() + "\n";
resp += "DESCONOCIDOS: " + d + "\n";
resp += "CANTIDADES:" + "\n";
// mostramos los conteos de los cultivos
PriorityQueue cola = new PriorityQueue();
for (i = 0; i < dim; i++) {
// adicionamos los valores a una cola de prioridad
if (cultivos[i] > 0)
cola.add(new CultivoValor((char) ('a' + i), cultivos[i]));
// resp += (char) ('a' + i) + " - " + cultivos[i] + "\n";
}
// mostramos la cola
while (!cola.isEmpty()) {
CultivoValor cv = cola.poll();
resp += cv.cult + " - " + cv.val + "\n";
}
return resp;
}
}
class CultivoValor implements Comparable {
char cult;
int val;
public CultivoValor(char c, int v) {
this.cult = c;
this.val = v;
}
@Override
public int compareTo(CultivoValor X) {
if (X.val - this.val == 0)
return this.cult - X.cult;
return X.val - this.val;
}
}
Blog dedicado a la publicación de artículos, programas propios, traducciones de Roms de Nes, super Nes y mas, y alguno que otro artículo sobre tecnologia.
Saturday, February 25, 2017
Solución al problema: 10002 - El inspector [http://acm.cs.buap.mx] con Java
Para ver el link del problema Click aqui
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment