Mais um exercício resolvido! Confira a resposta!
Antes de resolver qualquer algoritmo do URI (BEECROWD agora), recomendamos seguir os seguintes passos:
- Ler todo enunciado do problema.
- Ler os tópicos do fórum em caso de dúvidas
- Preparar arquivos de entrada para teste, considerando as entradas de exemplo do URI, do udebug e outros valores limite;
- Preparar o ambiente de desenvolvimento e utilizar os mesmos parâmetros dos compiladores do URI
- 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)
Problema: 2534
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 ", ¬as[i]); qsort(notas, populacao, sizeof(int), compara); while (consultas--) { scanf("%i ", &posicao); printf("%i\n", notas[posicao-1]); } } return 0; }
#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; }
Nenhum comentário:
Postar um comentário