// 2014-02-21

// Recebe uma sequencia de inteiros pela entrada padrao.
// Todos os numeros devem estar no intervalo 0..N-1.
// Desenha um histograma do numero de ocorrencias de 
// cada inteiro recebido.

// Complilacao: javac MeuHistograma.java
// Execucao:    java MeuHistograma N < arquivodeinteiros
// Exemplos:    java MeuHistograma 50 < randAints10K.txt
//              java MeuHistograma 50 < randBints10K.txt

// Por via das duvidas, nao vou usar acentos nem cedilha.

public class MeuHistograma {

    private final double[] freq;
    private double max;

    // Construtor de uma instância de MeuHistograma
    public MeuHistograma(int N) {
        freq = new double[N];
    }

    // Adiciona uma ocorrencia de i 
    public void addDataPoint(int i) {
        freq[i]++;
        if (freq[i] > max) max = freq[i]; 
    } 

    // Desenha histograma
    public void draw() {
        StdDraw.setYscale(0, max);
        StdStats.plotBars(freq);
    }
 
    public static void main(String[] args) {
        StdDraw.setCanvasSize(500, 400);
        int N = Integer.parseInt(args[0]);
        MeuHistograma hist = new MeuHistograma(N); 
        while (!StdIn.isEmpty()) {
           hist.addDataPoint(StdIn.readInt());
        }
        hist.draw();
    } 
} 
