Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class L2Q1 {
- static class No {
- int t;
- int q;
- No esquerda;
- No direita;
- No(int t, int q) {
- this.t = t;
- this.q = q;
- this.esquerda = null;
- this.direita = null;
- }
- }
- static int altura(No raiz, No atual) {
- int resposta = -1;
- if (raiz == null) {
- return -1;
- }
- if (atual.t > raiz.t) {
- resposta = altura(raiz.direita, atual);
- } else if (atual.t < raiz.t) {
- resposta = altura(raiz.esquerda, atual);
- }
- return 1 + resposta;
- }
- static No buscar(int t, No raiz) {
- No resposta = raiz;
- if (raiz != null) {
- if (t > raiz.t) {
- resposta = buscar(t, raiz.direita);
- } else if (t < raiz.t) {
- resposta = buscar(t, raiz.esquerda);
- } else {
- resposta = raiz;
- }
- }
- return resposta;
- }
- static No resposta = null;
- static No inserir(int t, int q, No raiz) {
- if (raiz != null) {
- if (t > raiz.t) {
- if (raiz.direita == null) {
- raiz.direita = new No(t, q);
- resposta = raiz.direita;
- } else {
- inserir(t, q, raiz.direita);
- }
- } else {
- if (raiz.esquerda == null) {
- raiz.esquerda = new No(t, q);
- resposta = raiz.esquerda;
- } else {
- inserir(t, q, raiz.esquerda);
- }
- }
- }
- return resposta;
- }
- static No remover(int t, No raiz) {
- No resposta = null;
- if (raiz.direita != null) {
- // sucessor
- } else if (raiz.esquerda != null) {
- // filho esquerda
- } else {
- // proprio no
- resposta = null;
- }
- return resposta;
- }
- public static void main(String[] args) {
- Arquivo arquivo = new Arquivo("L2Q1.in", "L2Q1.out");
- No raiz = null;
- while (!arquivo.isEndOfFile()) {
- int c = arquivo.readInt();
- int t = arquivo.readInt();
- int q = arquivo.readInt();
- int altura = -1;
- int quantidade = 0;
- No atual = buscar(t, raiz);
- if (c == 0) {
- if (atual != null) {
- atual.q = atual.q + q;
- } else {
- if (raiz == null) {
- raiz = new No(t, q);
- atual = raiz;
- } else {
- atual = inserir(t, q, raiz);
- }
- }
- } else {
- // TERMINAR O REMOVER
- if (atual != null) {
- if (q < atual.q) {
- atual.q = atual.q - q;
- } else {
- remover(t, raiz);
- atual = null;
- }
- }
- }
- if (atual != null) {
- altura = altura(raiz, atual);
- // A RAIZ TÁ MUDANDO
- quantidade = atual.q;
- }
- arquivo.println(altura + " " + quantidade);
- }
- arquivo.close();
- }
- }
Add Comment
Please, Sign In to add comment