Pesquisar este blog

Livros Recomendados

terça-feira, 19 de dezembro de 2023

URI (BEECROWD) - 2408 - Vice-Campeão - Ad-Hoc - C, C++ e Haskell

Agora vamos de "Vice-Campeão"! Um exercício muito fácil e bom para quem está começando na programação! Esse exercício está categorizado como ad-hoc.

Plataforma: Beecrowd (antiga URI)

Problema2408

Enunciado:

A OBI (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.

Linguagens: C, C++ e Haskell

Solução:

A solução é simples, basta ler os três valores e identificar qual é o segundo maior. 

Código em C++:

#include <iostream>

int main() {
	int a, b, c, resposta;
	std::cin >> a >> b >> c;
	resposta = a;
	if (a >= b && a >= c) {
		if (b >= c)
			resposta = b;
		else
			resposta = c;
	}
	else if (b >= a && b >= c) {
		if (c >= a)
			resposta = c;
	}
	else if (c >= a && c >= b) {
		if (b >= a)
			resposta = b;
	}
	std::cout << resposta << std::endl;
	return 0;
}

Código em C:

Em C, li os valores e por meio de estruturas condicionais avaliei quem é o segundo maior valor, colocando ele numa variável chamada resposta. Assim, no fim basta imprimir esta variável.

#include <stdio.h>
int main() {
	int a, b, c, resposta;
	scanf("%d %d %d", &a, &b, &c);
	resposta = a;
	if (a >= b && a >= c) {
		if (b >= c)
			resposta = b;
		else
			resposta = c;
	}
	else if (b >= a && b >= c) {
		if (c >= a)
			resposta = c;
	}
	else if (c >= a && c >= b) {
		if (b >= a)
			resposta = b;
	}
	printf("%d\n", resposta);
	return 0;
}

Código em Haskell:

No código Haskell basta ler a linha toda e ordenar os valores com a função sort (disponível em Data.List). Assim, o segundo valor da lista será o vice-campeão, basta imprimir este valor!

import Data.List (sort)

main :: IO ()
main = do
   linha <- getLine
   let numeros = map read (words linha) :: [Int]
   let [ultimo, vice, campeao] = sort numeros
   print vice

Chave PIX (chave aleatória) para doações: 6d8bc7a8-5d74-493a-ab7a-3515baf35956
Ajude o blog mais uma vez!

Nenhum comentário:

Postar um comentário

Postagem em destaque

URI (BEECROWD) - 2158 - Helping Uncle Cláudio (Ajudando o Tio Cláudio) - Matemática - C, C++ e Haskell

Buenas! Estou aqui mais uma vez para resolver um problema de Matemática! Agora tenho resolvido alguns dessa categoria, pra que vocês possam ...

Postagens mais visitadas