Pesquisar este blog

Livros Recomendados

Mostrando postagens com marcador 2534. Mostrar todas as postagens
Mostrando postagens com marcador 2534. Mostrar todas as postagens

segunda-feira, 15 de março de 2021

URI (BEECROWD) - 2534 - Exame Geral - Iniciante - C e C++

Mais um exercício resolvido! Confira a resposta!

Antes de resolver qualquer algoritmo do URI (BEECROWD agora), recomendamos seguir os seguintes passos:

  1. Ler todo enunciado do problema.
  2. Ler os tópicos do fórum em caso de dúvidas
  3. Preparar arquivos de entrada para teste, considerando as entradas de exemplo do URI, do udebug e outros valores limite;
  4. Preparar o ambiente de desenvolvimento e utilizar os mesmos parâmetros dos compiladores do URI
  5. Preparar um código-fonte padrão, já contendo a chamada às bibliotecas padrão, pré-processadores, retorno de função e um comando de escrita com "\n", pois no URI a grande maioria dos problemas exige a quebra de linha final.


Plataforma: URI (BEECROWD)

Problema2534

Enunciado:

Todo ano bissexto é realizado o exame geral de matemática da Nlogônia. Todos os cidadãos da nação são avaliados a fim de se estudar o desenvolvimento lógico e matemático do país ao longo dos anos.

Após as correções, os cidadãos são ordenadados de acordo com suas notas (quanto maior, melhor) e recebem descontos no imposto de renda de acordo com sua qualificação.

O Escritório Central de Estatística (ECE) é encarregado de processar os dados das notas obtidas no exame. Entretanto este ano, Vasya, um dos responsáveis, está internado no hospital com gripe H1N1 e você foi contratado para realizar o seu trabalho.

Escreva um programa que dado o número de habitantes da Nlogônia e todas as notas obtidas, responda as consultas para retornar a nota do cidadão que ficou em determinada posição.


Linguagens: C e C++


Solução:

Código em C:

#include <stdio.h>

int compara(const void *a, const void *b) {
    return *(int*)b - *(int*)a;
}

int main () {
    
    int populacao, consultas, posicao, i;
    
    while (scanf("%i %i ", &populacao, &consultas) != EOF) {
    
        int notas[populacao];
        
        for (i = 0; i < populacao; i++)
            scanf("%i ", &notas[i]);
        
        qsort(notas, populacao, sizeof(int), compara);
    
        while (consultas--) {
            scanf("%i ", &posicao);
            printf("%i\n", notas[posicao-1]);
        }
    }
    
    return 0;
}

Código em C++:

#include <iostream>

using namespace std;

int compara(const void *a, const void *b) {
    return *(int*)b - *(int*)a;
}

int main () {
    
    int populacao, consultas, posicao, i;
    
    while (cin >> populacao >> consultas) {
    
        int notas[populacao];
        
        for (i = 0; i < populacao; i++)
            cin >> notas[i];
        
        qsort(notas, populacao, sizeof(int), compara);
    
        while (consultas--) {
            cin >> posicao;
            cout << notas[posicao-1] << endl;
        }
    }
    
    return 0;
}

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