#include <iostream>
#include <cstdlib>
#include <fstream>

using namespace std;

int mpbe (int, int, int);

int ido[1000][6];

int main()
{
    setlocale(LC_ALL,"hun");

    ///2. feladat
    ifstream be;
    be.open("hivas.txt");
    if(be.fail()){
        cout << "Hiba";
        cin.get();
        exit(-1);
    }
    int i=0;
    while(be >> ido[i][0] >> ido[i][1] >> ido[i][2] >> ido[i][3] >> ido[i][4] >> ido[i][5] ) {
        i++;
    }
    be.close();
    int db=i;
    ///3. feladat
    cout << "3. feladat" << endl;
    for(int j=0; j<24; j++){
        int szum=0;
        for(int i=0; i<db; i++){
            if(ido[i][0]==j) szum++;
        }
        if(szum) cout << j << " ora " << szum << " hivas" << endl;
    }
    ///4. feladat
    cout << "4. feladat" << endl;
    int lhossz=0;
    int index=0;
    for(int i=0; i<db; i++){
       if((mpbe(ido[i][3],ido[i][4],ido[i][5])-mpbe(ido[i][0],ido[i][1], ido[i][2])) > lhossz){
          lhossz=mpbe(ido[i][3],ido[i][4], ido[i][5])-mpbe(ido[i][0],ido[i][1], ido[i][2]);
          index=i;
          }
    }
    cout << "A leghosszabb ideig vonalban levo hivo " << index+1 << ". sorban szerepel, a hivas hossza: " << lhossz << " masodperc" << endl;
    ///5. feladat
    cout << "Adjon meg egy idopontot: (ora, perc, mperc) " ;
    int ora, perc, mperc;
    cin >> ora >> perc >> mperc;
    int ipont=mpbe(ora, perc, mperc);
    i=0;
    int var=0;
    while(mpbe(ido[i][0],ido[i][1], ido[i][2])>ipont || mpbe(ido[i][3],ido[i][4],ido[i][5])<ipont && i<db) {

          i++;
          }
    for(int i=0; i<db; i++){
        if((mpbe(ido[i][0],ido[i][1], ido[i][2])<ipont) && (mpbe(ido[i][3],ido[i][4],ido[i][5])>ipont) ) var++;
    }
    cout << "5. feladat" << endl;
    //a var valtozohoz az aktualis tarsalgo is hozzaadodik, ezert 1-t le kell vonni
    if(var) cout << "A varakozok szama: " << var-1 << " a beszelo a " << i+1 << ". hivo." << endl;
    else cout << "Nem volt hivo" << endl;


    ///6-7. feladat
    int sikerID[db];
    int j=0;
    for(int i=0; i<db; i++){
        if(mpbe(ido[i][3],ido[i][4],ido[i][5])>mpbe(8,0,0) && mpbe(ido[i][0],ido[i][1],ido[i][2])<=mpbe(12,0,0)
                && (mpbe(ido[i][3],ido[i][4],ido[i][5])>mpbe(ido[i-1][3],ido[i-1][4],ido[i-1][5])) ) {
                    sikerID[j]=i;
                    j++;

                }
    }


    cout << "6. feladat" << endl;
    cout << "Az utolsó telefonáló adatai a " << sikerID[j-1]+1 << " sorban van, és " ;
    int hivas=mpbe(ido[sikerID[j-1]][0],ido[sikerID[j-1]][1],ido[sikerID[j-1]][2]);
    int kapcsolas= mpbe(ido[sikerID[j-2]][3],ido[sikerID[j-2]][4],ido[sikerID[j-2]][5]);
    if(kapcsolas-hivas) cout << kapcsolas-hivas << " másodpercet várt." << endl;
    else cout << " 0 másodpercet várt." << endl;
    ofstream ki;
    ki.open("sikeres.txt");
    ki << sikerID[0]+1 << " ";
    if(ido[sikerID[0]][0]<8) ki << "8 0 0 " << ido[sikerID[0]][3] << " " << ido[sikerID[0]][4] << " " << ido[sikerID[0]][5] << endl;
    else ki << ido[sikerID[0]][0] << " " << ido[sikerID[0]][1] << " " << ido[sikerID[0]][2] << ido[sikerID[0]][3] << " " << ido[sikerID[0]][4] << " " << ido[sikerID[0]][5] << endl;
    for(int i=1; i<j; i++){
          ki << sikerID[i]+1 << " " << ido[sikerID[i-1]][3]  << " "  << ido[sikerID[i-1]][4]  << " "  << ido[sikerID[i-1]][5]  << " "
           << ido[sikerID[i]][3]  << " "  << ido[sikerID[i]][4]  << " "  << ido[sikerID[i]][5] << endl;

    }
    ki.close();
    return 0;
}

int mpbe (int o, int p, int mp){

    return o*3600+p*60+mp;

}
