Essas são as soluções em C e C++ para o exercício Churras no Yuri, do URI/BEECROWD! Espero que curtam!
Plataforma: URI (BEECROWD)
Problema: 2633
Enunciado:
Yuri é um bom companheiro. Sempre fazemos o churras dos “manos ;)” na casa dele! Desta vez, o motivo do churrasco é que os manos estão finalmente começando a passar em bons concursos! Então, hoje teremos aquela edição especial do churras, with alcohol and futebol de sabão!
A empresa do futebol de sabão está demorando para encher o campo e Yuri, já entendiado, começou a viajar na seguinte pergunta: se assássemos as carnes por ordem da data de validade, qual seria a sequência de peças de carne resultante? Como o MacBook de Yuri está muito longe (e a preguiça está muito perto), ele pediu a sua ajuda para responder esta pergunta.
Linguagens: C e C++
Solução:
Código em C:
#include <stdio.h> #include <stdlib.h> #include <string.h> struct par { char s[22]; int d; }; int compara(const void *a, const void *b) { struct par *aa = (struct par *)a; struct par *bb = (struct par *)b; return aa->d - bb->d; } int main() { int n, data, i; struct par p[10]; char rango[22]; while (scanf("%i ", &n) != EOF) { for (i = 0; i < n; i++) { scanf("%s %i ", rango, &data); strcpy(p[i].s, rango); p[i].d = data; } qsort(p, n, sizeof(struct par), compara); for (i = 0; i < n; i++) { if (i) printf(" "); printf("%s", p[i].s); } printf("\n"); memset(p, 0, n*sizeof(p[0])); } return 0; }
#include <algorithm> #include <iostream> #include <vector> #include <map> using namespace std; bool compara(pair<string, int>& a, pair<string, int>& b) { return a.second < b.second; } int main() { int n; while (cin >> n) { map<string, int> linhas; vector<pair<string, int> > vet; string rango; int data; while (n--) { cin >> rango >> data; linhas.insert({rango, data}); } for (auto& it : linhas) vet.push_back(it); sort(vet.begin(), vet.end(), compara); for (auto& it : vet) { if (&it == &vet.front()) cout << it.first; else cout << ' ' << it.first; } cout << endl; } return 0; }