Resolvi aqui um exercício da categoria ad-hoc e resolvi compartilhar com vocês. Reinauguração do CEI é o nome dele. Fiz em C e C++. Espero que curtam a solução!
Plataforma: URI (BEECROWD)
Problema: 2556
Enunciado:
Para comemorar a reinauguração do espaço físico do Clube de Espanhóis Inteligentes (CEI), uma grande festa está acontecendo no clube neste exato momento!
Mateuz é um integrante do CEI que está ajudando na organização da festa. Sempre que um convidado chega ou vai embora da festa, Mateuz anota em um papel quantos minutos se passaram desde o início da festa até aquele momento.
Mateuz acabou de repassar os números anotados para os presidentes do CEI, Freitaz e Rodriguez. Note que os presidentes têm apenas os minutos em que convidados entraram e sairam da festa. Desta forma, para cada minuto recebido, Freitaz e Rodriguez não sabem se o convidado estava entrando ou saindo naquele momento. Sabe-se apenas que: a festa começou sem convidados; até este exato momento, nenhum convidado entrou na festa mais de uma vez; e, neste exato momento, não há convidados na festa, isto é, todos os convidados foram embora (pois foram participar de uma competição de programação, mas pretendem voltar à festa depois). Os números anotados também são todos distintos entre si, mas não são dados necessariamente em ordem.
Sua tarefa é ajudar Freitaz e Rodriguez a determinar qual o maior número possível de convidados que podem ter estado na festa simultaneamente em algum momento. Determine também a quantidade máxima de minutos que esta quantidade de convidados pode ter estado na festa simultaneamente.
Linguagens: C e C++
Solução:
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 n, m[1000], i; while (scanf("%d", &n) != EOF) { for (i = 0; i < n; i++) { scanf("%d", &m[i]); } qsort(m, n, sizeof(int), compara); printf("%d %d\n", n/2, m[n/2]-m[(n/2)-1]); } return 0; }
#include <iostream> #include <algorithm> using namespace std; int compara(const void *a, const void *b) { return (*(int*)a - *(int*)b); } int main() { int n, m[1000], i; while (cin >> n) { for (i = 0; i < n; i++) cin >> m[i]; sort(m, m+n); cout << n/2 << " " << m[n/2]-m[(n/2)-1] << endl; } return 0; }
Nenhum comentário:
Postar um comentário