(SPOJ) 1333 - Sorvete - Solução

import java.io.*;
import java.util.*;

class Main {
    class Resultado {
        int inicio;
        int fim;
    }
   
    public static void main(String[] args) throws NumberFormatException, IOException {
        Main processando = new Main();
        processando.processa();

        System.exit(0);
    }

    static int leitor(BufferedReader br) throws NumberFormatException, IOException {
        int n;
        int resp = 0;

        while (true) {
            n = br.read();
            if (n >= '0' && n <= '9')
                break;
        }
        while (true) {
            resp = resp*10 + n-'0';
            n = br.read();
            if (n < '0' || n > '9')
                break;
        }

        return resp;
    }

    void processa() throws NumberFormatException, IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int comprimentoPraia = leitor(br);
        int numSorveteiros = leitor(br);
       
        int contaCasos = 0;
        while (comprimentoPraia != 0 || numSorveteiros != 0) {
            int[] vetor = new int[comprimentoPraia+1];
               
            for (int i = 0; i < numSorveteiros; i++) {
                int inicio = leitor(br);
                int fim = leitor(br);
               
                for (int j = inicio; j < fim; j++) {
                    vetor[j] = 1;
                }
            }
           
            Resultado[] resposta = new Resultado[comprimentoPraia];
            for (int i = 0; i < comprimentoPraia; i++) {
                resposta[i] = new Resultado();
            }
           
            int indice = 0;
            int contaSorveteiro = 0;
            while (indice <= comprimentoPraia) {
                if (vetor[indice] == 1) {
                    resposta[contaSorveteiro].inicio = indice;
                    indice++;
                    while (indice <= comprimentoPraia && vetor[indice] == 1) {
                        indice++;
                    }
                    resposta[contaSorveteiro].fim = indice;
                    contaSorveteiro++;
                }
                indice++;
            }
           
            contaCasos++;
            bw.write("Teste " + contaCasos + "\n");
            for (int i = 0; i < contaSorveteiro; i++) {
                bw.write(resposta[i].inicio + " " + resposta[i].fim + "\n");
            }
            bw.write("\n");

            comprimentoPraia = leitor(br);
            numSorveteiros = leitor(br);
        }

        bw.flush();
        bw.close();

        return;
    }
}

Comments

Popular posts from this blog

(Coderbyte) Dash Insert II - Solução

(Coderbyte) Run Length - Solução

(Coderbyte) Counting Minutes I - Solução