#include <conio.h>
#include <iostream>
#include <fstream>

using namespace std;

struct utas
{
	int sorszam, ules, fel, le, fizet;
} utasok[500];

int e_szam;  //eladott jegyek száma
int vonalhossz;
int ar_10;
int utvonal[201];   //0 és 200 km majd nem játszik

void kiir(int s)
{
	cout << endl;
	cout << s << ". feldat" << endl;
	cout << "..............." << endl;
}

int kerekit(int ezt)
{
	// 1,2,6,7 le	3,4,8,9 fel
	int kerek;
	int maradek=ezt%5;

	if(maradek<3) kerek=ezt-maradek;
	else kerek=ezt-maradek+5;

	return kerek;
}

void F1()
{
	int fizetendo;  //beolvasáskor kiszámolhatjuk a fizetendő díjat minden utasra
	int megtett_ut;

	ifstream be;
	be.open("eladott.txt");

	be >> e_szam;
	be >> vonalhossz;
	be >> ar_10;

	cout << "Eladott jegyek száma: " << e_szam << endl;
	cout << "Vonal hossza: " << vonalhossz << endl;
	cout << "10 km ára: " << ar_10 << endl << endl;

	for(int i=0;i<e_szam;i++)
	{
		utasok[i].sorszam=i+1;
		be >> utasok[i].ules;
		be >> utasok[i].fel;
		be >> utasok[i].le;

		megtett_ut=utasok[i].le-utasok[i].fel;
		if(megtett_ut%10!=0) fizetendo=(megtett_ut/10+1)*ar_10;
		else fizetendo=(megtett_ut/10)*ar_10;

		utasok[i].fizet=kerekit(fizetendo);

		//Adatok kiírása (nem kell), csak rossz szokás... .)
		cout << utasok[i].sorszam << " ";
		cout << utasok[i].ules << " ";
		cout << utasok[i].fel << " ";
		cout << utasok[i].le << " ";
		cout << utasok[i].fizet << endl;
	}
	be.close();
}

void F2()
{
	int i=e_szam-1;

	cout << "Utolsó (" << utasok[i].sorszam << ".) utas adatai: " << endl;
	cout << "Ülésszám: " << utasok[i].ules;
	cout << " Beutazott távolság: " << utasok[i].le-utasok[i].fel << endl;
}

void F3()
{
	for(int i=0;i<e_szam;i++)
	{
		if(utasok[i].fel==0&&utasok[i].le==vonalhossz)
		{
			cout << utasok[i].sorszam << " ";
		}
	}
	cout << endl;
}

void F4()
{
	//egyszerű összegzés a feladat

	int bevetel=0;
	for(int i=0;i<e_szam;i++)
	{
		bevetel=bevetel+utasok[i].fizet;
	}
	cout << "A társaság bevétele: " << bevetel << endl;
}

void F5()
{
	//Több megoldás is lehetséges!!!

	int max_fel=0;

	//Második legnagyobb szám keresése felszálláskor
	for(int i=1;i<e_szam;i++)
	{
		if(utasok[i].fel>max_fel&&utasok[i].fel!=vonalhossz) max_fel=utasok[i].fel;
	}

	cout << "Utolsó előtti megálló felszállók esetén: " << max_fel << endl;

	int max_le=0;

	//Második legnagyobb szám keresése felszálláskor
	for(int i=1;i<e_szam;i++)
	{
		if(utasok[i].le>max_le&&utasok[i].le!=vonalhossz) max_le=utasok[i].le;
	}

	cout << "Utolsó előtti megálló leszállók esetén: " << max_le << endl;

	//Végső maximum, azaz utolsó előtti megálló
	//Valószínű, hogy a max_fel és max_le azonos, de hát ki tudja?
	int max;
	if(max_fel>=max_le) max=max_fel; else max=max_le;

	int fel_db=0, le_db=0;

	for(int i=0;i<e_szam;i++)
	{
		if(utasok[i].fel==max) fel_db++;
		if(utasok[i].le==max)  le_db++;
	}

	cout << "Utolsó előtti megállónál felszállók száma: " << fel_db << endl;
	cout << "Utolsó előtti megállónál leszállók száma : " << le_db << endl;
	cout << endl;
	cout << "Fel- és leszállók összesen: " << fel_db+le_db << endl;
}

void F6()
{
	//Itt is több megoldás lehetséges!
	for(int i=0;i<201;i++) utvonal[i]=0;
	//Az utasok fel- és leszállása alapján növeljük az adott kilométernek megfelelő tömbelemet,
	//így jelezzük, hogy ott megálló volt
	for(int i=0;i<e_szam;i++)
	{
		utvonal[utasok[i].fel]++;
		utvonal[utasok[i].le]++;
	}

	int megallo_db=0;
	//0 és 200 km most nem játszik
	for(int i=1;i<200;i++)
	{
		if(utvonal[i]!=0) megallo_db++;
	}
	cout << "Az induló és a végállomás közötti megállók száma: " << megallo_db << endl;
}

void F7()
{
	ofstream ki;
	ki.open("kihol.txt");
	int tav;
	cout << "Távolság: ";
	cin >> tav;

	int ules[48];
	//48 ülés van, kezdetben mind üres
	for(int i=0;i<48;i++) ules[i]=0;

	for(int i=0;i<e_szam;i++)
	{
		//ha tav=felszallasi hely, azt is kezeljuk
		if(tav>=utasok[i].fel&&tav<utasok[i].le)
		{
			ules[utasok[i].ules-1]=utasok[i].sorszam;
		}
	}

	for(int i=0;i<48;i++)
	{
		if(ules[i]==0)
		{
			ki << i+1 << ". ülés: üres" << endl;
			cout << i+1 << ". ülés: üres" << endl;
		}
		else
		{
			ki << i+1 << ". ülés: " << ules[i] << ". utas"  << endl;
			cout << i+1 << ". ülés: " << ules[i] << ". utas"  << endl;
		}
	}
	ki.close();
}

int main()
{
	setlocale(LC_ALL, "hun");
	cout << "Helyjegy" << endl;
	kiir(1);
	F1();
	kiir(2);
	F2();
	kiir(3);
	F3();
	kiir(4);
	F4();
	kiir(5);
	F5();
	kiir(6);
	F6();
	kiir(7);
	F7();
	return 0;
}
