Într-o școală există un sistem de acces cu ajutorul cartelelor, conectat la un calculator și o imprimantă. Fiecare elev al școlii are câte o cartelă. Într-o zi, la utilizarea fiecărei cartele, sistemul imprimă următoarele informații pe hârtie, pe câte o linie, după regula următoare:
Într-o școală există un sistem de acces cu ajutorul cartelelor, conectat la un calculator și o imprimantă. Fiecare elev al școlii are câte o cartelă. Într-o zi, la utilizarea fiecărei cartele, sistemul imprimă următoarele informații pe hârtie, pe câte o linie, după regula următoare:
– Caracterul b
dacă elevul este băiat sau caracterul f
dacă este fată. Caracterul va fi urmat de un spațiu;
– Caracterul i
dacă elevul a intrat în școală sau caracterul e
dacă a ieșit din școală. De asemenea, acest caracter va fi urmat de un spațiu;
– Momentul utilizării cartelei, exprimat prin oră, minute și secunde. Acestea vor fi reprezentate în cadrul liniei, exact în această ordine, prin trei numere naturale, separate între ele prin câte un spațiu.
Cerința
Cunoscându-se toate cele N
linii imprimate într-o zi determinați:
1. Câți băieți și câte fete sunt la școală după cele N
acțiuni imprimate de sistem.
2. Care este numărul total de secunde în care, în școală, s-au aflat un număr egal, nenul, de fete și băieți, până în momentul utilizării ultimei cartele. Dacă nu există această situație se afișează 0
.
3. Care este numărul maxim de secunde în care, în școală, până în momentul utilizării ultimei cartele, s-au aflat neîntrerupt un număr impar de băieți. Dacă nu există o astfel de situație se afișează 0
.
Date de intrare
Fișierul de intrare cartele.in
conține pe prima linie un număr natural C
reprezentând numărul cerinței care poate avea valorile 1
, 2
sau 3
, pe a doua linie numărul natural N
, iar pe următoarele N
linii informațiile imprimate de sistem sub forma descrisă în enunț, în ordinea strict crescătoare a momentului folosirii cartelei.
Date de ieșire
Dacă C = 1
, atunci fișierul de ieșire cartele.out
va conține, în această ordine, separate printr-un spațiu, numărul de băieți și numărul de fete determinat conform cerinței 1.
Dacă C = 2
sau C = 3
, atunci fișierul de ieșire cartele.out
va conține pe prima linie un singur număr natural ce reprezintă rezultatul determinat conform cerinței.
Restricții și precizări
1 ≤ N ≤ 10.000
- La momentul utilizării primei cartele, în școală nu se află niciun elev
- Sistemul de acces nu permite folosirea simultană a două cartele
- Pentru orice linie imprimată de sistem
0 ≤ ora ≤ 23
,0 ≤ minute ≤ 59
și0 ≤ secunde ≤ 59
- Pe fiecare linie a fișierului de intrare, după ultimul număr, reprezentând secundele, nu există spațiu.
- Pentru rezolvarea corectă a primei cerințe se acordă
20
de puncte, pentru rezolvarea corectă a celei de-a doua cerințe se acordă30
de puncte iar pentru rezolvarea corectă a celei de-a treia cerințe se acordă40
de puncte. - În concurs s-au acordat
10
puncte din oficiu. Aici se acordă pentru exemplele din enunț.
Exemplul 1:
cartele.in
1 3 b i 0 0 24 f i 0 0 26 b e 0 0 29
cartele.out
0 1
Explicație
Un băiat a intrat la momentul 0 0 24
(adică ora 0
, minutul 0
și secunda 24
) și ieșit la momentul 0 0 29
. O fată a intrat la momentul 0 0 26
. După cele 3
acțiuni, în școală a rămas o fată.
Exemplul 2:
cartele.in
2 3 b i 0 0 24 f i 0 0 26 b e 0 0 29
cartele.out
3
Explicație
Între momentul 0 0 24
și 0 0 26
în școală este doar un băiat. Între momentul 0 0 26
și 0 0 29
în școală se află un băiat și o fată adică un număr nenul egal de fete și băieți. Deci, numărul de secunde determinat este 3
.
Exemplul 3:
cartele.in
2 8 f i 8 19 10 b i 8 19 12 b e 8 19 15 b i 8 20 0 b e 8 20 4 b i 8 20 10 b i 8 20 50 b i 8 20 51
cartele.out
47
Explicație
Între momentele 8 19 12
și 8 19 15
în școală se află 1
băiat și 1
fată, deci durata este 3
secunde.
Între momentele 8 20 0
și 8 20 4
în școală se află 1
băiat și 1
fată, deci durata este 4
secunde.
Între momentele 8 20 10
și 8 20 50
în școală se află 1
băiat și 1
fată, deci durata este 40
de secunde.
Durata totală este 3 + 4 + 40 = 47
de secunde.
Exemplul 4:
cartele.in
3 9 f i 8 19 10 b i 8 19 12 f e 8 19 13 b e 8 19 15 b i 8 20 0 b i 8 20 1 b i 8 20 10 b i 8 20 12 b i 8 20 13
cartele.out
3
Explicație
Între momentele 8 19 12
și 8 19 15
în școală se află 1
băiat, deci durata este 3
secunde.
Între momentele 8 20 0
și 8 20 1
în școală se află 1
băiat, deci durata este 1
secundă.
Între momentele 8 20 10
și 8 20 12
în școală se află 3
băieți, deci durata este 2
secunde.
Durata maximă cerută este de 3
secunde.
#include<fstream> #include<cstdlib> using namespace std; ifstream cin("cartele.in"); ofstream cout("cartele.out"); int main() { short int C; cin>>C; if(C==1) { int nr_Fete=0,nr_Baieti=0; char c,c1; int nr,h,m,s; cin>>nr; for(int i=1; i<=nr; i++) { cin>>c>>c1>>h>>m>>s; if(c=='f') { if(c1=='e') nr_Fete--; else nr_Fete++; } else { if(c1=='e') nr_Baieti--; else nr_Baieti++; } } cout<<nr_Baieti<<" "<<nr_Fete; } if(C==2) { int nr_Fete=0,nr_Baieti=0; char c,c1; int nr,s1,s2,h,m,s,timp_total=0; cin>>nr; for(int i=1; i<=nr; i++) { cin>>c>>c1>>h>>m>>s; bool era_egal=false; if(nr_Fete!=0&&nr_Fete==nr_Baieti) era_egal=true; if(c=='f') { if(c1=='e') nr_Fete--; else nr_Fete++; } else { if(c1=='e') nr_Baieti--; else nr_Baieti++; } if(i==1) { s1=0; s1+=h*3600; s1+=m*60; s1+=s; } else { s2=0; s2+=h*3600; s2+=m*60; s2+=s; if(era_egal) timp_total+=s2-s1; s1=s2; } } cout<<timp_total; } if(C==3) { int nr_Baieti=0,nr,s1=0,s2,timp_maxim=0; char c,c1; int h,m,s; cin>>nr; for(int i=1; i<=nr; i++) { cin>>c>>c1>>h>>m>>s; bool era_impar=false; if(nr_Baieti%2==1) era_impar=true; if(c=='b') { if(c1=='e') nr_Baieti--; else nr_Baieti++; } if(nr_Baieti%2==1&&s1==0) { s1+=h*3600; s1+=m*60; s1+=s; } else { s2=0; s2+=h*3600; s2+=m*60; s2+=s; if(era_impar&&nr_Baieti%2==0) { if(s2-s1>timp_maxim) timp_maxim=s2-s1; s1=0; } } } cout<<timp_maxim; } }