/* Sprendė Eimutis Karčiauskas 1966m. laidos abiturientas
KTU licėjus (buvusi Kauno 22 (Purienų) vid.m-la) -sąlyga:
https://www.nsa.smm.lt/wp-content/uploads/2021/03/3679_2013-IT-1-uzd-intern.pdf
------- duomenis perkelkite į failą
15
Vilnius Vilniaus 541278
Dusetos Utenos 4211
Alytus Alytaus 69859
Druskininkai Alytaus 16890
Ignalina Utenos 6307
Kavarskas Utenos 753
Lazdijai Alytaus 5027
Simnas Alytaus 1940
Trakai Vilniaus 5504
Utena Utenos 33086
Veisiejai Alytaus 1673
Vievis Vilniaus 5246
Lentvaris Vilniaus 11832
Visaginas Utenos 28438
Zarasai Utenos 8001
*/
#include <iostream>
#include <algorithm>
using namespace std;
struct Apskritis {
string vardas; // apskrities vardas
int miestu_sk; // miestų skaičius apskrityje
int gyv_sk; // visų apskrities gyventojų skaičius
int min_miest; // mažiausio miestelio gyv. skaičius
};
// rezervuojame vietą apskričių sąrašui
Apskritis apskritys[100]; // pagal nutylėjimą reikšmės nulinės
int ap_sk = 0; // tikras apskričių skaičius
//------------------------------------------------
// taikysime paiešką su apsaugine reikšme pabaigoje
int formuotiApskritiesInd(string paieska) {
apskritys[ap_sk].vardas = paieska; // visada rasime :)
int i = 0;
while (apskritys[i].vardas != paieska) i++;
if(i == ap_sk) ap_sk++; // jei nebuvo - padidiname
return i;
}
//------------------------------------------------
void skaityti(){ // skaitomas srautas ir formuojamas sąrašas
int n; // miestelių skaičius
cin >> n;
string miestas, apskritis;
int miesto_gsk;
for (int i = 0; i < n; i++){
cin >> miestas >> apskritis >> miesto_gsk;
int ind = formuotiApskritiesInd(apskritis);
apskritys[ind].miestu_sk++;
apskritys[ind].gyv_sk += miesto_gsk;
int mm = apskritys[ind].min_miest;
apskritys[ind].min_miest = (mm==0)? miesto_gsk: min(mm, miesto_gsk);
}
}
//============================================
bool ar_tvarka(Apskritis a, Apskritis b){ // rikiavimo kriterijus
return a.min_miest < b.min_miest ||
a.min_miest == b.min_miest && a.vardas < b.vardas;
}
void rikiuoti(Apskritis mas[], int n){
for (int i=0; i<n-1; i++)
for (int j = i+1; j < n; j++)
if(!ar_tvarka(mas[i], mas[j]))
swap(mas[i], mas[j]);
}
//------------------------------------------------
void spausdinti(){ // pageidaujamų rezultatų išvedimas
cout << ap_sk << endl;
for (int i = 0; i < ap_sk; i++){
Apskritis a = apskritys[i];
cout << a.vardas << " " << a. min_miest << " " << a.gyv_sk << endl;
}
}
//------------------------------------------------
int main(){
freopen ("U1.txt","r",stdin);
//freopen ("U1rez.txt","w",stdout);
skaityti();
rikiuoti(apskritys, ap_sk);
//sort(apskritys, apskritys + ap_sk, arTvarka);
spausdinti();
}
15
Vilnius Vilniaus 541278
Dusetos Utenos 4211
Alytus Alytaus 69859
Druskininkai Alytaus 16890
Ignalina Utenos 6307
Kavarskas Utenos 753
Lazdijai Alytaus 5027
Simnas Alytaus 1940
Trakai Vilniaus 5504
Utena Utenos 33086
Veisiejai Alytaus 1673
Vievis Vilniaus 5246
Lentvaris Vilniaus 11832
Visaginas Utenos 28438
Zarasai Utenos 8001
3
Utenos 753 80796
Alytaus 1673 95389
Vilniaus 5246 563860