Pesquisar este blog

Livros Recomendados

terça-feira, 16 de março de 2021

URI (BEECROWD) - 2556 - Reinauguração do CEI - Ad-Hoc - C e C++

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)

Problema2556

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

Código em C++:

#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

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