(SPOJ) 845 - Tetris - Solução

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

class Main {
    class Agrega {
        //public Agrega(String n, int p) {
        //    nome = n;
        //    pontos = p;
        //}
        public String nome;
        public int pontos;
    }
   
    public static void main(String[] args) throws NumberFormatException, IOException {
        Main processando = new Main();
        processando.processa();
       
        System.exit(0);
    }
   
    void processa() throws NumberFormatException, IOException {
        String line = "";
       
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
       
        int numJogadores;
       
        int contador = 0;
        Agrega[] jogadores = new Agrega[1000];
        for (int i = 0; i < 1000; i++) jogadores[i] = new Agrega();
        while ((line = br.readLine()) != null)  {
            numJogadores = Integer.parseInt(line);
           
            if (numJogadores == 0) {
                return;
            }
           
            contador++;

            int qtePontuacoes = 12;
          
            int somatorio;
            for (int i = 0; i < numJogadores; i++) {
                String nome = br.readLine();
               
                somatorio = 0;
                int lePonto;
                int maior = -1;
                int menor = 1001;
                line = br.readLine();
                StringTokenizer tokenizer = new StringTokenizer(line);
                for (int j = 0; j < qtePontuacoes; j++) {
                    lePonto = Integer.parseInt(tokenizer.nextToken());
                    if (lePonto > maior) {
                        maior = lePonto;
                    }
                    if (lePonto < menor) {
                        menor = lePonto;
                    }
                    somatorio += lePonto;
                }
                somatorio = somatorio - menor - maior;
                //a = new Agrega;
                //a.nome = nome;
                //a.pontos = somatorio;
                jogadores[i].nome = nome;
                jogadores[i].pontos = somatorio;
            }
           

            //Sorting
            Arrays.sort(jogadores, 0, numJogadores, new Comparator<Agrega>() {
                @Override
                public int compare(Agrega  a1, Agrega  a2)
                {
                    if (a1.pontos < a2.pontos) {
                        return 1;
                    }
                    else if (a1.pontos == a2.pontos) {
                        return a1.nome.compareTo(a2.nome);
                    }
                    else {
                        return -1;
                    }
                }
            });
           
            bw.write("Teste " + contador);
            bw.newLine();
            int contador2 = 0;
            int pontuacaoAnterior = -1;
            int qteAumentar = 0;
            for (int i = 0; i < numJogadores; i++) {
                if (jogadores[i].pontos != pontuacaoAnterior) {
                    contador2++;
                    if (qteAumentar == 0) {
                        bw.write(contador2 + " " + jogadores[i].pontos + " " + jogadores[i].nome);
                    //    System.out.println(contador2 + " " + jogadores[i].pontos + " " + jogadores[i].nome);               
                    }
                    else {
                        contador2 += qteAumentar;
                      bw.write(contador2 + " " + jogadores[i].pontos + " " + jogadores[i].nome);
                        qteAumentar = 0;
                    }
                }
                else { // jogadores[i].pontos == pontuacaoAnterior
                   bw.write(contador2 + " " + jogadores[i].pontos + " " + jogadores[i].nome);               
                    qteAumentar++;
                }
                bw.newLine();
                pontuacaoAnterior = jogadores[i].pontos;
            }       
           
            bw.newLine();
            bw.flush();
           
        }
       
        bw.close();               
        return;
    }
}

Comments

Popular posts from this blog

(Coderbyte) Powers of Two - Solução

(Coderbyte) Dash Insert II - Solução

(CoderByte) Number Search - Solução