/* Sprendė Eimutis Karčiauskas 1966m. laidos abiturientas
https://www.nsa.smm.lt/wp-content/uploads/2021/06/IT_2021_pagr.pdf
<<< Pradiniai duomenys - perkėlimui į failą >>>
8
Povilas Matematika 5 9 9 9 9 10
Jonas Istorija 4 10 9 10 10
Milda Matematika 6 10 8 9 9 9 9
Asta Informatika 3 10 10 10
Ieva Matematika 3 9 9 8
Rima Informatika 3 10 10 7
Juozas Fizika 2 8 9
Laura Fizika 1 8
*/
#include <iostream>
using namespace std;
struct Pamoka {
string vardas;
string mokiniai[50];
int mokN;
};
// visos reikšmės pagal nutylėjimą nulinės
Pamoka pamokos[50];
int pamN;
//------------------------------------------------
// taikysime paiešką su apsaugine reikšme pabaigoje
int rastiPamokosInd(string paieska) {
pamokos[pamN].vardas = paieska; // visada rasime :)
int i = 0;
while (pamokos[i].vardas != paieska) i++;
if(i == pamN) pamN++; // jei nebuvo - padidiname
return i;
}
//=====================
// skaičiuojamas vidurkis pažymių tiesiai iš srauto cin
double vidurkis(){
int kiek; // kiek bus pažymių
int suma = 0;
cin >> kiek;
for (int i = 0; i < kiek; i++){
int pazymys;
cin >> pazymys;
suma += pazymys;
}
return (double)suma / kiek;
}
//------------------------------------------------
void skaityti(){ // skaitome duomenis iš srato cin
int n;
string mokinys, pamokosVardas;
cin >> n; // mokinių skaičius
for (int i = 1; i <= n; i++){
cin >> mokinys >> pamokosVardas ;
if (vidurkis() >= 9){ // jei tinka, formuojame rezultatą
int ind = rastiPamokosInd(pamokosVardas);
pamokos[ind].vardas = pamokosVardas;
pamokos[ind].mokiniai[pamokos[ind].mokN] = mokinys;
pamokos[ind].mokN++;
}
}
}
//============================================
bool arTvarka(Pamoka a, Pamoka b){
return a.mokN > b.mokN ||
a.mokN == b.mokN && a.vardas < b.vardas;
}
void rikiuoti(Pamoka mas[], int n){
for (int i=0; i<n-1; i++)
for (int j = i+1; j < n; j++)
if(!arTvarka(mas[i], mas[j]))
swap(mas[i], mas[j]);
}
//------------------------------------------------
void spausdinti(){
cout << (pamN == 0? "Neatitinka vidurkis": "");
for (int i = 0; i < pamN; i++){
cout << pamokos[i].vardas << " " << pamokos[i].mokN << endl;
for (int j=0; j<pamokos[i].mokN; j++)
cout << pamokos[i].mokiniai[j] << endl;
}
}
//------------------------------------------------
int main(){
freopen ("U2.txt","r",stdin);
//freopen ("U1rez.txt","w",stdout);
skaityti();
rikiuoti(pamokos, pamN);
spausdinti();
return 0;
}
8
Povilas Matematika 5 9 9 9 9 10
Jonas Istorija 4 10 9 10 10
Milda Matematika 6 10 8 9 9 9 9
Asta Informatika 3 10 10 10
Ieva Matematika 3 9 9 8
Rima Informatika 3 10 10 7
Juozas Fizika 2 8 9
Laura Fizika 1 8