Răspuns :
► Program C++:
#include <iostream>
#include <string>
#include <unordered_map>
int main() {
std::unordered_map<unsigned, unsigned> tabel_ore;
unsigned n;
//Citire date, adaugare in tabel
std::cin >> n;
for (unsigned index = 1; index <= n; index++) {
unsigned nr_muncitor;
unsigned nr_ore;
std::string txt_aux;
std::cin >> txt_aux >> nr_muncitor >> txt_aux >> txt_aux >> nr_ore >> txt_aux;
tabel_ore[nr_muncitor] += nr_ore;
}
//Determinare maxim
std::pair<const unsigned, unsigned>* pointer_muncitor_minim = nullptr;
for (auto& muncitor : tabel_ore) {
if (!pointer_muncitor_minim || muncitor.second > pointer_muncitor_minim->second || muncitor.second == pointer_muncitor_minim->second && muncitor.first < pointer_muncitor_minim->first) {
pointer_muncitor_minim = &muncitor;
}
}
//Afisare rezultat
std::cout << pointer_muncitor_minim->first;
}
► Explicatie :
- Folosim variabila txt_aux pentru a memora temporar textul care e inutil, dar care face parte din formatarea datelor de intrare (Muncitorul, a, muncit)
- Un pair este un tip de date special care are ca si campuri alte doua tipuri de date. In cazul nostru, pair<const unsigned, unsigned> este o pereche care retine un numar natural constant si un numar natural. Pentru a avea acces la primul element accesam folosind membrul first, pentru a avea acces la al doilea element accesam folosind second
- Un unordered_map este un container din STL care retine perechi de valori de tip (cheie, valoare), altfel spus fiecarei chei ii este asociata o valoare. In implementarea acestuia se foloseste pair. E asemanator cu un vector (si se comporta ca un vector in mare parte), cu diferenta ca ocupa mai putina memorie (daca foloseam un vector simplu trebuia sa folosim un vector de 10000 de elemente). In cazul nostru cheia reprezinta numarul muncitorului, valoarea reprezinta numarul de ore lucrate. Deci vom folosi unordered_map<unsigned, unsigned>. Primul element va fi transformat automat in constanta.
- Un pointer este un tip de date care retine adresa altei locatii de memorie (in cazul nostru folosim pointer pentru a gasi adresa perechii (muncitor, numar_de_ore) pe care il cere problema)
- Editat pentru citire de la tastatura.

Vă mulțumim că ați vizitat platforma noastră dedicată Informatică. Sperăm că informațiile prezentate v-au fost utile. Dacă aveți întrebări sau aveți nevoie de suport suplimentar, vă rugăm să ne contactați. Vă așteptăm cu drag și data viitoare! Nu uitați să adăugați site-ul nostru la lista de favorite!