Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- public class Main{
- public static void main(String[] args) {
- Scanner in = new Scanner (System.in);
- int rep = in.nextInt();
- int a = 0;
- while (a < rep){
- int b = 0;
- int ope = in.nextInt();
- String[] tabela = new String[101];
- int tabelaFinaltam = 0;
- while(b < ope){
- int entradas = 0;
- String linha = in.next();
- String texto = linha.substring(4,linha.length());
- int valHash = convHash(texto);
- boolean repetido = false;
- if (linha.startsWith("ADD")){
- int c = 0;
- entradas = 0;
- while (c < 101){
- if (tabela[c] != null && tabela[c].equals(texto)){
- repetido = true;
- }
- c++;
- }
- if (repetido == false){
- int localValor = 0;
- while (entradas < 20){
- localValor = antiColisao(valHash,entradas);
- if (tabela[localValor] == null){
- tabelaFinaltam++;
- tabela[localValor] = texto;
- entradas = 20;
- }
- entradas++;
- }
- }
- } else {
- entradas = 0;
- while (entradas < 20){
- int removerValor = antiColisao(valHash,entradas);
- if (tabela[removerValor] != null && tabela[removerValor].equals(texto)){
- tabelaFinaltam--;
- tabela[removerValor] = null;
- entradas = 20;
- }
- entradas++;
- }
- }
- b++;
- }
- a++;
- System.out.println(tabelaFinaltam);
- printar(tabela);
- }
- }
- public static void printar(String[] tabela){
- int p = 0;
- while (p < 101){
- if (tabela[p] != null){
- System.out.printf(p + ":" + tabela[p] + "\n");
- }
- p++;
- }
- }
- public static int convHash (String textoint){
- //Conv pra ASCII
- int chaVal = 0;
- int x = 0;
- for (int k = 1; k < (textoint.length() + 1); k++){
- chaVal = (int) textoint.charAt(k-1);
- x += (chaVal * k);
- }
- x *= 19;
- x = x % 101;
- return x;
- }
- public static int antiColisao (int valor, int entradas){
- //Funcao quadrada
- int posicao = (valor + (entradas * entradas) + 23 * entradas);
- posicao = posicao % 101;
- return posicao;
- }
- }
Add Comment
Please, Sign In to add comment