#include <iostream>
#include <cstdlib>
#include <fstream>

using namespace std;

struct adat{
   int ora, perc, azon;
   string irany;
}tomb[1000];

int main()
{
    setlocale(LC_ALL,"hun");
    ///1. feladat
    ifstream be;
    be.open("ajto.txt");
    if(be.fail()){
        cout << "Hiba";
        cin.get();
        exit(-1);
    }

    int i=0;
    while(be  >> tomb[i].ora >> tomb[i].perc >> tomb[i].azon >> tomb[i].irany){

        i++;
    }
    be.close();
    int db=i;
    ///2. feladat
    cout << "Az első belépő: " << tomb[0].azon << endl;
    i=db-1;
    while(tomb[i].irany!="ki") {
       i--;
    }
    cout << "Az utolsó kilépő: " << tomb[i].azon << endl;
    ///3. feladat
    ofstream ki;
    ki.open("athaladas.txt");
    if(ki.fail()){
        cout << "Hiba";
        cin.get();
        exit(-1);
    }
    for(int i=1; i<=100; i++){
        int szum=0;
        for(int j=0; j<db; j++){
            if(tomb[j].azon==i) szum++;
        }
        //csak akkor irjuk ki ha valóban áthaladt i azonosítójú személy
        if(szum) ki << i << " " << szum << endl;
    }
    ///4. feladat
    //Azok voltak a végén a társalgóban, akiknél az összegzés páratlan számot ad
    cout << "A végén a társalgóban voltak: ";
    for(int i=1; i<=100; i++){
        int szum=0;
        for(int j=0; j<db; j++){
            if(tomb[j].azon==i) szum++;
        }
        //csak akkor irjuk ki ha valóban áthaladt i azonosítójú személy
        if(szum%2==1) cout << i << " " ;
    }
    cout << endl;
    ///5. feladat
    //Elöszőr a bentlévők számának maximumát adjuk meg
    int szum=0;
    int maxszum=0;
    for(int i=0; i<db; i++){
            if(tomb[i].irany=="be") szum++;
            else if(tomb[i].irany=="ki") szum--;
            if(szum>maxszum) maxszum=szum;
        }
    //Megkeressük az első időpontot, amikor maxszum ember volt
    i=0;
    szum=0;
    while(szum!=maxszum){

            if(tomb[i].irany=="be") szum++;
            else if(tomb[i].irany=="ki") szum--;
            if(szum>maxszum) maxszum=szum;
            i++;
    }
    cout << "Például " << tomb[i-1].ora << ":" << tomb[i-1].perc << "-kor voltak a legtöbben a társalgóban. (" << maxszum << " fő)" << endl;
    ///6. feladat
    int azon;
    cout << "Adjon meg egy azonosítót: ";
    cin >> azon;
    ///7. feladat
    for(int i=0; i<db; i++){
        if(tomb[i].azon==azon) {
            if(tomb[i].irany=="be") cout << tomb[i].ora << ":" << tomb[i].perc << "-";
            else cout << tomb[i].ora << ":" << tomb[i].perc << endl;
        }
    }
    cout << endl;
    ///8. feladat
    /*
    Az összes belépés és kilépés idejét összeadjuk külön-külön percben
    Ha bent volt a végén, akkor a kilépés idejéhez 15-60 percet adunk
    A két idő különbsége lesz a benttartozkodás ideje
    */
    szum=0;
    int szamlalo=0;
    int beIdo=0, kiIdo=0;
    for(int i=0; i<db; i++){
        if(tomb[i].azon==azon) {
            szamlalo++;
            if(tomb[i].irany=="be") beIdo+= tomb[i].ora*60+tomb[i].perc;
            else if(tomb[i].irany=="ki") kiIdo+= tomb[i].ora*60+tomb[i].perc;

        }

    }
    if(szamlalo%2) kiIdo+=15*60;
    cout << "A(z) " << azon << ". személy összesen " << kiIdo-beIdo
    << " percet volt bent és a megfigyelés végén ";
    if(szamlalo%2==1) cout << " a társalgóban volt." << endl;
    else cout << "nem volt a társalgóban." << endl;
    return 0;
}
