(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;
}
}
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
Post a Comment