Pesquisar este blog

Livros Recomendados

domingo, 14 de fevereiro de 2021

URI (BEECROWD) - 1436 - Jogo do Tijolo - Matemática - C e C++

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)

Problema1436


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;
}

Código em C++:


#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;
}

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