Programação Competitiva

OBI [2012] – Vice campeão

Questão da OBI (Olimpíada Brasileira de Informática) de 2012, Fase 1, Nível 1.

A Organização de Bocha Internacional é responsável por organizar a competição mundial de bocha. Infelizmente esse esporte não é muito popular, e numa tentativa de aumentar a sua popularidade, ficou decidido que seriam chamados, para a Grande Final Mundial, o campeão e o vice-campeão de cada sede nacional, ao invés de apenas o primeiro lugar.

Tumbólia é um país pequeno que já havia realizado a sua competição nacional quando a nova regra foi instituída, e o comitê local não armazenou quem foi o segundo classificado. Felizmente eles armazenaram a pontuação de todos competidores – que foram apenas três, devido ao tamanho diminuto do país. Sabe-se também que as pontuações de todos jogadores foram diferentes, de forma que não ocorreu empate entre nenhum deles.

Resta agora descobrir quem foi o vice-campeão e para isso o comitê precisa de ajuda.

Entrada

A primeira e única linha da entrada consiste de três inteiros separados por espaços, A, B e C, as pontuações dos 3 competidores.

Saída

Imprima uma única linha na saída, contendo apenas um número inteiro, a pontuação do vice-campeão.

Restrições

Exemplos

Entrada

4 5 6

Saída

5

Entrada

10 5 9

Saída

9

A questão pode ser acessada através do link: http://olimpiada.ic.unicamp.br/pratique/programacao/nivel1/2012f1p1_vice

Nesse link também existe a opção de testar o algoritmo desenvolvido e ver automaticamente se o algoritmo está correto (botão “Submete solução”). Entre as linguagens de programação disponível está Python, que é linguagem utilizada na codificação presente no vídeo.

Algoritmo em Python

#faz a leitura dos valores - leitura em uma linha
entrada = raw_input()
p1, p2, p3 = entrada.split()
p1 = int(p1)
p2 = int(p2)
p3 = int(p3)

#realiza os testes necessarios para estabelecer o segundo maior valor
if (p1 > p2 and p1 < p3) or (p1 > p3 and p1 < p2):
    print p1
elif (p2 > p1 and p2 < p3) or (p2 > p3 and p2 < p1):
    print p2
else:
    print p3

Vídeo da resolução em Python

Resolução em C++

#include <iostream>
using namespace std;
 
int main() {
	int p1, p2, p3;
 
	//leitura dos 3 valores
	cin >> p1 >> p2 >> p3;
 
	//realiza os testes necessários para estabelecer o segundo maior valor
	if ( (p1 > p2 && p1 < p3) || (p1 > p3 && p1 < p2) ) {
	    cout << p1;
	} else if ( (p2 > p1 && p2 < p3) || (p2 > p3 && p2 < p1) ) {
	    cout << p2;
	} else {
	    cout << p3;
	}
 
	return 0;
}

Experimente esse código em: http://ideone.com/JHWmWu

Sair da versão mobile