Tipos de Entrada:
Vou citar alguns tipos de entrada comuns no SPOJ.
- "O final da entrada é indicado por uma linha que contém apenas dois zeros, separados por um espaço em branco", como citado no exercício SUBPRIME.
Este tipo de entrada significa que o seu programa deve continuar rodando, mesmo após ter mostrado os resultados do primeiro teste, parando apenas quando as entradas forem iguais a 0.
Para casos como este, basta um loop infinito que abranja todo o código, com excessão das inicializações das variáveis (conselho pessoal), e com a leitura de entrada logo como primeira instrução do loop. Após a leitura, uma condição para que se caso os valores sejam iguais a zero poderia levar a quebra desse loop, que levaria ao fim do programa.
- "A entrada contém um único conjunto de teste ...", como citado no exercício CHOCPJ09.
Entre os mais comuns tipos de entrada, a entrada contém apenas um único conjunto de testes. Portanto, não é necessário nenhum loop de repetição.
Como um algoritmo comum, basta que rode apenas uma vez e termine.
Esta é uma das entradas que mais confundem os programadores inexperientes.
O segundo exemplo que citei é mais claro, porém o primeiro deixou a desejar.
Trata-se do seguinte: Seu programa deverá receber as entradas, até que se encontre o "final do arquivo", que seria algo como o fim do arquivo do qual está sendo retirado os testes.
A única forma que encontrei de lidar com este tipo de entrada, em c ou c++, foi utilizar o scanf dentro da condição do loop while, tal como while(scanf("%d",&num)!=EOF).
Pra quem não entendeu, EOF significa End of File( ou fim do arquivo), portanto o algoritmo irá entrar no loop caso a entrada seja diferente do fim do arquivo.
Bom, esses são os mais comuns e os que eu me lembro por hora. Caso ainda tenha ficado alguma dúvida, ou caso encontrem algum tipo de entreda que não entendam, postem nos comentários.
Em breve farei um post sobre os não menos importantes tipos de saída do SPOJ.
Até mais.
Me ajuda com problema FOCO!
ResponderExcluirQual exatamente é seu problema com esse exercício?
ResponderExcluirPreciso de saber a sequência de passos para resolvê-lo, usei várias abordagens mas não consegui sucesso, apenas para algumas instâncias de dados.
ExcluirEu não cheguei a resolver esse exercício, mas pelo que sei, você basicamente precisa ordenar as entradas, e então verificar um valor de foco da primeira foto que possa excluir as próximas. Esse processo deve ser repetido até que não haja mais fotos.
Excluir