Buenas, pessoal! Exercício Jogo do Tijolo, da categoria Matemática! Esse é novidade. A solução até que é curta, mas exige conhecimento sobre ordenação para resolver e obter o aceite. Confiram na sequência. Aliás, a solução de vocês ficou diferente? Uma possibilidade seria implementar manualmente o algoritmo de ordenação, o que também é muito legal e ajuda no aprendizado! Talvez futuramente eu poste uma solução dessas aqui :) Abraços e bom proveito!
Plataforma: URI (BEECROWD)
Problema: 1436
Enunciado:
Há uma vila em Bangladesh, onde o jogo de tijolo é muito popular. Jogo de tijolo é um jogo de equipe. Cada equipe é constituída por um número ímpar de jogadores. O número de jogadores deve ser maior do que 1, mas não pode ser superior a 10. A idade de cada jogador deve estar entre 11(inclusive) e 20(inclusive). Não há dois jogadores com a mesma idade. Há um capitão para cada equipe.
A falta de comunicação entre dois jogadores depende da sua diferença de idade, ou seja, é maior se a diferença de idade for maior. Assim, eles selecionam o capitão de uma equipe de maneira que a quantidade de jogadores desta equipe que são mais jovens e mais velhos do que ele é igual.
As idades de todos os membros da equipe são fornecidas. Você tem que determinar a idade do capitão.
Linguagens: C e C++
Solução:
Nesse exercício era necessário ler "t" e os "t" valores "n", sendo que para cada valor "n" havia "n" idades, salvas no array idades. Em cada teste era necessário ordenar as idades e obter idades[j/2].
Código em C:
#include <stdio.h> #include <stdlib.h> int compara(const void *a, const void *b) { return (*(int*)a - *(int*)b); } int main() { int t, n, i, j, idades[11], casos = 1; char linha[30]; scanf("%d", &t); for (i = 0; i < t; i++) { scanf("%d", &n); for (j = 0; j < n; j++) scanf("%d", &idades[j]); qsort(idades, j, sizeof(int), compara); printf("Case %d: %d\n", casos++, idades[j/2]); } return 0; }
#include <iostream> #include <cstdlib> using namespace std; int compara(const void *a, const void *b) { return ( *(int*)a - *(int*)b); } int main() { int t, n, i, j, idades[11], casos = 1; char linha[30]; cin >> t; for (i = 0; i < t; i++) { cin >> n; for (j = 0; j < n; j++) cin >> idades[j]; qsort(idades, j, sizeof(int), compara); cout << "Case " << casos++ << ": " << idades[j/2] << endl; } return 0; }