Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<cstdio>
- #include<string>
- #include<vector>
- #include<set>
- #include<iostream>
- #include<algorithm>
- using namespace std;
- #define sc scanf
- #define pr printf
- #define fr first
- #define se second
- #define pb push_back
- #define mp make_pair
- const int MN = 5010;
- const int MM = 5010;
- const int mod = 1000000007;
- int q, f;
- string p_naz, dt, s;
- struct flight{
- string final_punct;
- int flight_number;
- string flight_type;
- string flight_date;
- string flight_day;
- string flight_time;
- string arrival_date;
- string arrival_day;
- string arrival_time;
- set<string>cities;
- set<string>passengers;
- bool operator<(flight o)const{
- return flight_number<o.flight_number;
- }
- };
- set<flight>kucha;
- set<flight>::iterator it;
- set<string>::iterator is;
- main(){
- //freopen("in.txt", "r", stdin); freopen("out.txt", "w", stdout);
- for(;;){
- pr("Vyberite nomer operacii\n");
- pr("0. Vyhod\n");
- pr("1. Vvod, zamena i udalenie svedeniy o reisah i passazhirah\n");
- pr("2. Dostupnye punkty naznacheniya - konechnye i promejutochnye po date otpravleniya i vozmozhnye daty otpravleniya, nomera reisov i vremya otpravleniya po punktu naznacheniya\n");
- pr("3. Poist passazhirov po znacheniyu odnogo ili neskolkih sleduyushih parametrov:\
- \n-> punkt naznacheniya\
- \n-> data i vremya otptravleniya\
- \n-> nomer reisa\n");
- cin>>q;
- if(q == 0){
- break;
- }
- else if(q == 1){
- pr("Ukajite nomer reisa kotorogo vy hoteli by izmenit ili -1 elsi hotite vvodit noviy reis\n");
- cin>>f;
- if(f == -1){
- flight nf;
- pr("konechniy punct: ");
- cin>>nf.final_punct;
- pr("nomer reisa: ");
- cin>>nf.flight_number;
- pr("tip reisa: ");
- cin>>nf.flight_type;
- pr("data otpravleniya v formate dd.mm.gggg: ");
- cin>>nf.flight_date;
- pr("den nedeli otpravleniya: ");
- cin>>nf.flight_day;
- pr("vremya otpravleniya v formate mm:hh : ");
- cin>>nf.flight_time;
- pr("data pribitya v formate dd.mm.gggg: ");
- cin>>nf.arrival_date;
- pr("den nedeli pribitya: ");
- cin>>nf.arrival_day;
- pr("vremya pribitya v formate mm:hh : ");
- cin>>nf.arrival_time;
- pr("vvodite spisok gorodov sledovaniya etogo reisa cherez Enter. vvodite -1 v konce spiski ");
- while(1){
- cin>>s;
- if(s == "-1"){
- break;
- }
- nf.cities.insert(s);
- }
- pr("vvodite spisok passazhirov etogo reisa cherez Enter. vvodite -1 v konce spiski");
- while(1){
- cin>>s;
- if(s == "-1"){
- break;
- }
- nf.passengers.insert(s);
- }
- kucha.insert(nf);
- }
- else {
- flight nf;
- nf.flight_number = q;
- it = kucha.lower_bound(nf);
- if(it == kucha.end() || it->flight_number != q){
- pr("takoy reis otsutstvuet\n");
- continue;
- }
- cout<<"Informaciya o dannom reise"<<endl;
- cout<<"konechniy punct naznacheniya: "<<it->final_punct<<endl;
- cout<<"tip "<<it->flight_type<<endl;
- cout<<"vremya otpravleniya: "<<it->flight_time<<" "<<it->flight_day<<" "<<it->flight_date<<endl;
- cout<<"vremya pribitya: "<<it->arrival_time<<" "<<it->arrival_day<<" "<<it->arrival_date<<endl;
- cout<<"spisok gorodov sledovaniya: ";
- for(is=it->cities.begin(); is!=it->cities.end(); is++){
- cout<<*is<<" ";
- }cout<<endl;
- cout<<"spisok passazhirov: ";
- for(is=it->passengers.begin(); is!=it->passengers.end(); is++){
- cout<<*is<<" ";
- }cout<<endl;
- pr("kakuyu svedeniyu vi hoteli by izmenit? vvodite nomer vybora\n");
- cout<<"0. udalit reis"<<endl;
- cout<<"1. konechniy punct naznacheniya"<<endl;
- cout<<"2. tip"<<endl;
- cout<<"3. vremya otpravleniya"<<endl;
- cout<<"4. vremya pribitya"<<endl;
- cout<<"5. goroda sledovaniya"<<endl;
- cout<<"6. passazhiry"<<endl;
- cin>>q;
- if(q == 0){
- cout<<"vi deystvitelno hotite udalit etot reis?"<<endl;
- cout<<"0. net"<<endl;
- cout<<"1. da"<<endl;
- cin>>q;
- if(q == 1){
- kucha.erase(it);
- }
- continue;
- }
- else if(q == 1){
- cout<<"vvodite noviy konechniy punkt naznacheniya: ";
- nf = *it;
- kucha.erase(it);
- cin>>nf.final_punct;
- kucha.insert(nf);
- }
- else if(q == 2){
- cout<<"vvodite noviy tip: ";
- nf = *it;
- kucha.erase(it);
- cin>>nf.flight_type;
- kucha.insert(nf);
- }
- else if(q == 3){
- cout<<"vvodite novoe vremya otpravleniya v formate mm:hh den nedeli dd.mm.gggg: ";
- nf = *it;
- kucha.erase(it);
- cin>>nf.flight_time;
- cin>>nf.flight_day;
- cin>>nf.flight_date;
- kucha.insert(nf);
- }
- else if(q == 4){
- cout<<"vvodite novoe vremya pribytya v formate mm:hh den nedeli dd.mm.gggg: ";
- nf = *it;
- kucha.erase(it);
- cin>>nf.arrival_time;
- cin>>nf.arrival_day;
- cin>>nf.arrival_date;
- kucha.insert(nf);
- }
- else if(q == 5){
- nf = *it;
- kucha.erase(it);
- nf.cities.clear();
- pr("vvodite noviy spisok gorodov sledovaniya etogo reisa cherez Enter. vvodite -1 v konce spiski ");
- while(1){
- cin>>s;
- if(s == "-1"){
- break;
- }
- nf.cities.insert(s);
- }
- kucha.insert(nf);
- }
- else if(q == 6){
- nf = *it;
- kucha.erase(it);
- nf.passengers.clear();
- pr("vvodite noviy spisok passazhirov etogo reisa cherez Enter. vvodite -1 v konce spiski");
- while(1){
- cin>>s;
- if(s == "-1"){
- break;
- }
- nf.passengers.insert(s);
- }
- kucha.insert(nf);
- }
- }
- }
- else if(q == 2){
- pr("Chto imeno vi hoteli by uznat\n");
- pr("0. Dostupnie punkti naznacheniya – konechnie i promejutochnie po date otpravleniya\n");
- pr("1. Vozmozhnie daty otpravleniya, nomera reisov i vremya otpravleniya po punktu naznacheniya\n");
- cin>>f;
- if(f == 0){
- pr("vvodite datu otpravleniya v formate dd.mm.gggg: ");
- cin>>s;
- pr("\nDostupnie punkti naznacheniya:\n");
- for(it=kucha.begin(); it!=kucha.end(); it++){
- if(it->flight_date == s){
- for(is=it->cities.begin(); is!=it->cities.end(); is++){
- cout<<*is<<endl;
- }
- }
- }
- }
- else {
- pr("vvodite punkt naznacheniya: ");
- cin>>s;
- pr("\nVozmozhnie daty otpravleniya, nomera reisov i vremya otpravleniya:\n");
- for(it=kucha.begin(); it!=kucha.end(); it++){
- if(it->final_punct == s){
- cout<<"reis: "<<it->flight_number<<" vremya: "<<it->flight_time<<" data: "<<it->flight_date<<endl;
- }
- }
- }
- }
- else if(q == 3){
- pr("Vvodite znacheniyu parametrov. Vvodite -1 esli vy ne hotite iskat po dannomu parametru\n");
- pr("punkt naznacheniya: ");
- cin>>p_naz;
- pr("data i vremya otptravleniya: ");
- cin>>dt;
- pr("nomer reisa: ");
- cin>>f;
- pr("\nSpisok passazhirov po znacheniyu dannih parametrov:\n");
- for(it=kucha.begin(); it!=kucha.end(); it++){
- if((p_naz == "-1" || it->final_punct == p_naz) && (dt == "-1" || it->flight_date == dt) && (f == -1 || it->flight_number == f)){
- for(is=it->passengers.begin(); is!=it->passengers.end(); is++){
- cout<<*is<<endl;
- }
- }
- }
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment