/* Sprendė Eimutis Karčiauskas 1966m. laidos abiturientas
------- duomenis perkelkite į failą
6
Petras A. Petraitis 213 15 20 00
Jurgis Jurgutis 221 16 12 12
Rima Joana 115 15 15 59
Zigmas Nosis 256 16 23 9
Roma Liepa 111 15 15 15
Rytis Uosis Ainis 255 16 23 9
5
256 16 43 15 5 5 5 5
213 15 50 10 4 0 5 3
111 16 5 35 5 4
255 16 55 59 5 4 3 1
115 16 42 22 2 5
*/
#include <iostream>
using namespace std;
struct Dalyvis{
int startoNum;
string ident; // dalyvio identifikuojanti informacija
int laikas; // viskas apjungta į sekundes nuo paros pradžios
};
Dalyvis dalyviai[100];
int dalN, finN;
// ***************************************************
void startoDuomenys() {
cin >> dalN;
for(int i=0; i<dalN; i++){
cin.ignore(80, '\n'); // pradedame skaityti nuo naujos eilutės
char idBuf[21]; // buferis ident nuskaitymui
cin.get(idBuf, 21); // fiksuoto teksto dydžio nuskaitymas
Dalyvis d; // tarpinis kintamasis
int val, min, sek;
cin >> d.startoNum >> val >> min >> sek;
d.ident = idBuf;
d.laikas = (val*60 + min) * 60 + sek;
dalyviai[i] = d;
}
}
// ***************************************************
// perskaito finišavusių dalyvių duomenis (laiką ir taiklius šūvius)
// ir suformuoja bendrą merginų ir vaikinų sąrašą
void finisoDuomenys() {
cin >> finN;
for(int i=0; i<finN; i++){
int num, val, min, sek, t1, t2; // laikas ir taiklūs šūviai
cin >> num >> val >> min >> sek >> t1 >> t2;
int finisoLaikas = (val*60 + min) * 60 + sek;
int bauda = (10 - t1 - t2) * 60;
int iFin = 0; // randame finišavusio dalyvio indeksą
while(dalyviai[iFin].startoNum != num)
iFin++;
dalyviai[iFin].laikas = finisoLaikas + bauda - dalyviai[iFin].laikas;
if(num / 100 == 2) { // vaikinams papildomos 2 šaudyklos ir baudos
cin >> t1 >> t2;
dalyviai[iFin].laikas += (10 - t1 - t2) * 60;
}
}
}
// ***************************************************
bool arTvarka(Dalyvis& a, Dalyvis& b){
return a.laikas > b.laikas ||
a.laikas == b.laikas && a.ident > b.ident;
}
void rikiuoti(Dalyvis 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]);
}
}
}
// ***************************************************
// peržiūri bendrą dalyvių sąrašą ir atrenka pagal lytį
void spausdinti(string lytis){
cout << lytis << endl;
int pozymis = lytis == "Merginos"? 1: 2;
for(int i=0; i<finN; i++){
Dalyvis d = dalyviai[i];
int t = d.laikas;
if(d.startoNum / 100 == pozymis)
cout << d.startoNum << " " << d.ident << " " <<
t / 3600 <<" "<< (t % 3600) / 60 <<" "<< t % 60 << endl;
}
}
// ***************************************************
int main() {
freopen ("U2.txt","r",stdin);
//freopen ("U2rez.txt","w",stdout); // pradžioje uždenkite
startoDuomenys();
finisoDuomenys();
rikiuoti(dalyviai, dalN);
spausdinti("Merginos");
spausdinti("Vaikinai");
}
6
Petras A. Petraitis 213 15 20 00
Jurgis Jurgutis 221 16 12 12
Rima Joana 115 15 15 59
Zigmas Nosis 256 16 23 9
Roma Liepa 111 15 15 15
Rytis Uosis Ainis 255 16 23 9
5
256 16 43 15 5 5 5 5
213 15 50 10 4 0 5 3
111 16 5 35 5 4
255 16 55 59 5 4 3 1
115 16 42 22 2 5