Submeter | Todas submissőes | Melhores | Voltar |
SALDO - Saldo de gols |
Hipólito é um torcedor fanático. Coleciona flâmulas, bandeiras, recortes de jornal, figurinhas de jogadores, camisetas e tudo o mais que se refira a seu time preferido. Quando ganhou um computador de presente em uma festa, resolveu montar um banco de dados com os resultados de todos os jogos de seu time ocorridos desde a sua fundação, em 1911. Depois de inseridos os dados, Hipólito começou a ficar curioso sobre estatísticas de desempenho do time. Por exemplo, ele deseja saber qual foi o período em que o seu time acumulou o maior saldo de gols. Como Hipólito tem o computador há muito pouco tempo, não sabe programar muito bem, e precisa de sua ajuda.
Tarefa
É dada uma lista, numerada seqüencialmente a partir de 1, com os resultados de todos os jogos do time (primeira partida: 3 x 0, segunda partida: 1 x 2, terceira partida: 0 x 5 ...). Sua tarefa é escrever um programa que determine em qual período o time conseguiu acumular o maior saldo de gols. Um período é definido pelos números de seqüência de duas partidas, A e B, onde A ≤ B. O saldo de gols acumulado entre A e B é dado pela soma dos gols marcados pelo time em todas as partidas realizadas entre A e B (incluindo as mesmas) menos a soma dos gols marcados pelos times adversários no período. Se houver mais de um período com o mesmo saldo de gols, escolha o maior período (ou seja, o período em que B - A é maior). Se ainda assim houver mais de uma solução possível, escolha qualquer uma delas como resposta.
Entrada
Seu programa deve ler vários conjuntos de teste. A primeira linha
de um conjunto de teste contém um inteiro não negativo, N
, que indica
o número de partidas realizadas pelo time (o valor N = 0
indica o
final da entrada). Seguem-se N
linhas, cada uma contendo um par de
números inteiros não negativos X
e Y
que representam o resultado da
partida: X
são os gols a favor e Y
os gols contra o time de
Hipólito. As partidas são numeradas sequencialmente a partir de 1, na
ordem em que aparecem na entrada.
Saída
Para cada conjunto de teste da entrada seu programa deve produzir
três linhas na saída. A primeira linha deve conter um identificador do
conjunto de teste, no formato “Teste n”
, onde n
é numerado a
partir de 1. A segunda linha deve conter um par de inteiros I
e J
que
indicam respectivamente a primeira e última partidas do melhor
período, conforme determinado pelo seu programa, exceto quando o saldo
de gols do melhor período for menor ou igual a zero; neste caso a
segunda linha deve conter a expressão “nenhum”
. A terceira linha
deve ser deixada em branco. A grafia mostrada no Exemplo de Saída,
abaixo, deve ser seguida rigorosamente.
Exemplo
Entrada: 2 2 3 7 1 9 2 2 0 5 6 2 1 4 0 0 5 1 1 5 6 2 0 5 3 0 2 0 3 0 4 0 Saída: Teste 1 2 2 Teste 2 3 8 Teste 3 nenhum
Restrições
0 ≤ N ≤ 10000
(N = 0 apenas para indicar o fim da entrada)
1 ≤ A ≤ N
A ≤ B ≤ N
0 ≤ X ≤ 50
0 ≤ Y ≤ 50
Adicionado por: | Wanderley Guimarăes |
Data: | 2006-04-19 |
Tempo limite: | 1s |
Tamanho do fonte: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Linguagem permitida: | Todas exceto: ASM64 CLOJURE ERL FSHARP JS-RHINO NODEJS PERL6 PY_NBC SCALA TCL VB.NET |
Origem: | Olimpiada Brasileira de Informatica 2000 |
hide comments
|
|||||
2017-11-14 15:36:26
por que a ultima saída do exemplo não tem as 3 linhas desejadas? |
|||||
2017-11-11 08:02:49
trâu cũng AC :))) |
|||||
2016-12-20 00:17:52
OFF: Hipólito é alemão! |
|||||
2016-03-28 04:10:45 Elsio [UFABC]
É o algoritmo de Kadane. Só que, além da variável de controle (soma) vc também guarda ponteiros temporários pro início e fim do intervalo. Quando todas as condições forem satisfeitas vc passa os ponteiros temporários pros de resposta definitiva. Tem que ser assim pq vc precisa comparar resultados correntes com ótimos, então deixe eles em variáveis diferentes. Preste muita atenção e teste muitos casos pois o 'else if' que fecha o intervalo tem quatro condições. |
|||||
2015-12-22 22:51:39
Pra galera q n ta dando talvez estejam fazendo o mesmo erro que eu.Se forem valores iguais deve-se colocar o MAIOR intervalo. |
|||||
2015-09-29 23:42:22
talvez vc ta errando a parte de imprimir o nenhum, aconteceu comigo tbm, essa entrada dele passa de boa ai na hora q manda nao da certo, so mudei uma comparaçao no final e deu! |
|||||
2015-04-13 15:04:24 Marcos Antonio de Souza Silva
Last edit: 2015-04-13 17:00:27 |
|||||
2013-05-02 18:24:00 Eduardo Nunes
Semelhante ao problema BAPOSTAS, com algumas adaptaçőes do algoritmo de Kadane ;-) |
|||||
2013-04-14 19:39:31 Yves Medhard Tibe da Cunha Tibe-bi
Năo sei como funciona os testes do SPOJ mais testei no Ideone.com e o programa reproduz com total fidelidade o teste.. nem adaptando as condicionais como o Vinícius Thiengo disse ele deu como resultado correto (obs os resultados estăo corretos). Alguma dica? Last edit: 2013-04-14 19:40:34 |
|||||
2012-07-19 23:40:31 Vinícius Thiengo [IFES]
Dica: Se vc estiver utilizando um condicional (similar, năo necessariamente igual) if(pro - contra > 0) e o resultado da certo em seus testes e errado no SPOJ, tente >= ao invés > apenas. Comigo funcionou. |