(SPOJ) 813 - Saldo de gols - Solução
import java.io.*;
import java.util.*;
import java.text.DecimalFormat;
import java.lang.Math;
class Main {
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));
int contador = 0;
while ((line = br.readLine()) != null) {
StringTokenizer tokenizer = new StringTokenizer(line);
int partidas = Integer.parseInt(tokenizer.nextToken());
if (partidas == 0) {
return;
}
contador++;
int favor;
int contra;
int[] saldo = new int[partidas];
for (int i = 0; i < partidas; i++) {
line = br.readLine();
tokenizer = new StringTokenizer(line);
favor = Integer.parseInt(tokenizer.nextToken());
contra = Integer.parseInt(tokenizer.nextToken());
saldo[i] = favor - contra;
}
int somaMaior = 0;
int soma = 0;
int inicioLista = 0;
int primeiro = 0;
int ultimo = 0;
for (int i = 0; i < partidas; i++) {
soma += saldo[i];
if (soma >= 0) {
if (soma > somaMaior || (soma == somaMaior && ultimo-primeiro < i-inicioLista)) {
somaMaior = soma;
primeiro = inicioLista+1;
ultimo = i+1;
}
}
else {
soma = 0;
inicioLista = i+1;
}
}
if (somaMaior > 0) {
System.out.println("Teste " + contador + "\n" + primeiro + " " + ultimo + "\n");
}
else {
System.out.println("Teste " + contador + "\n" + "nenhum" + "\n");
}
}
return;
}
}
import java.util.*;
import java.text.DecimalFormat;
import java.lang.Math;
class Main {
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));
int contador = 0;
while ((line = br.readLine()) != null) {
StringTokenizer tokenizer = new StringTokenizer(line);
int partidas = Integer.parseInt(tokenizer.nextToken());
if (partidas == 0) {
return;
}
contador++;
int favor;
int contra;
int[] saldo = new int[partidas];
for (int i = 0; i < partidas; i++) {
line = br.readLine();
tokenizer = new StringTokenizer(line);
favor = Integer.parseInt(tokenizer.nextToken());
contra = Integer.parseInt(tokenizer.nextToken());
saldo[i] = favor - contra;
}
int somaMaior = 0;
int soma = 0;
int inicioLista = 0;
int primeiro = 0;
int ultimo = 0;
for (int i = 0; i < partidas; i++) {
soma += saldo[i];
if (soma >= 0) {
if (soma > somaMaior || (soma == somaMaior && ultimo-primeiro < i-inicioLista)) {
somaMaior = soma;
primeiro = inicioLista+1;
ultimo = i+1;
}
}
else {
soma = 0;
inicioLista = i+1;
}
}
if (somaMaior > 0) {
System.out.println("Teste " + contador + "\n" + primeiro + " " + ultimo + "\n");
}
else {
System.out.println("Teste " + contador + "\n" + "nenhum" + "\n");
}
}
return;
}
}
Comments
Post a Comment