abdukodir

Untitled

Dec 6th, 2014
284
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.55 KB | None | 0 0
  1. #include<cstdio>
  2. #include<string>
  3. #include<vector>
  4. #include<set>
  5. #include<iostream>
  6. #include<algorithm>
  7. using namespace std;
  8. #define sc scanf
  9. #define pr printf
  10. #define fr first
  11. #define se second
  12. #define pb push_back
  13. #define mp make_pair
  14. const int MN = 5010;
  15. const int MM = 5010;
  16. const int mod = 1000000007;
  17. int q, f;
  18. string p_naz, dt, s;
  19. struct flight{
  20. string final_punct;
  21. int flight_number;
  22. string flight_type;
  23. string flight_date;
  24. string flight_day;
  25. string flight_time;
  26. string arrival_date;
  27. string arrival_day;
  28. string arrival_time;
  29. set<string>cities;
  30. set<string>passengers;
  31. bool operator<(flight o)const{
  32. return flight_number<o.flight_number;
  33. }
  34. };
  35. set<flight>kucha;
  36. set<flight>::iterator it;
  37. set<string>::iterator is;
  38. main(){
  39. //freopen("in.txt", "r", stdin); freopen("out.txt", "w", stdout);
  40. for(;;){
  41. pr("Vyberite nomer operacii\n");
  42. pr("0. Vyhod\n");
  43. pr("1. Vvod, zamena i udalenie svedeniy o reisah i passazhirah\n");
  44. pr("2. Dostupnye punkty naznacheniya - konechnye i promejutochnye po date otpravleniya i vozmozhnye daty otpravleniya, nomera reisov i vremya otpravleniya po punktu naznacheniya\n");
  45. pr("3. Poist passazhirov po znacheniyu odnogo ili neskolkih sleduyushih parametrov:\
  46. \n-> punkt naznacheniya\
  47. \n-> data i vremya otptravleniya\
  48. \n-> nomer reisa\n");
  49. cin>>q;
  50. if(q == 0){
  51. break;
  52. }
  53. else if(q == 1){
  54. pr("Ukajite nomer reisa kotorogo vy hoteli by izmenit ili -1 elsi hotite vvodit noviy reis\n");
  55. cin>>f;
  56. if(f == -1){
  57. flight nf;
  58. pr("konechniy punct: ");
  59. cin>>nf.final_punct;
  60. pr("nomer reisa: ");
  61. cin>>nf.flight_number;
  62. pr("tip reisa: ");
  63. cin>>nf.flight_type;
  64. pr("data otpravleniya v formate dd.mm.gggg: ");
  65. cin>>nf.flight_date;
  66. pr("den nedeli otpravleniya: ");
  67. cin>>nf.flight_day;
  68. pr("vremya otpravleniya v formate mm:hh : ");
  69. cin>>nf.flight_time;
  70. pr("data pribitya v formate dd.mm.gggg: ");
  71. cin>>nf.arrival_date;
  72. pr("den nedeli pribitya: ");
  73. cin>>nf.arrival_day;
  74. pr("vremya pribitya v formate mm:hh : ");
  75. cin>>nf.arrival_time;
  76. pr("vvodite spisok gorodov sledovaniya etogo reisa cherez Enter. vvodite -1 v konce spiski ");
  77. while(1){
  78. cin>>s;
  79. if(s == "-1"){
  80. break;
  81. }
  82. nf.cities.insert(s);
  83. }
  84. pr("vvodite spisok passazhirov etogo reisa cherez Enter. vvodite -1 v konce spiski");
  85. while(1){
  86. cin>>s;
  87. if(s == "-1"){
  88. break;
  89. }
  90. nf.passengers.insert(s);
  91. }
  92. kucha.insert(nf);
  93. }
  94. else {
  95. flight nf;
  96. nf.flight_number = q;
  97. it = kucha.lower_bound(nf);
  98. if(it == kucha.end() || it->flight_number != q){
  99. pr("takoy reis otsutstvuet\n");
  100. continue;
  101. }
  102. cout<<"Informaciya o dannom reise"<<endl;
  103. cout<<"konechniy punct naznacheniya: "<<it->final_punct<<endl;
  104. cout<<"tip "<<it->flight_type<<endl;
  105. cout<<"vremya otpravleniya: "<<it->flight_time<<" "<<it->flight_day<<" "<<it->flight_date<<endl;
  106. cout<<"vremya pribitya: "<<it->arrival_time<<" "<<it->arrival_day<<" "<<it->arrival_date<<endl;
  107. cout<<"spisok gorodov sledovaniya: ";
  108. for(is=it->cities.begin(); is!=it->cities.end(); is++){
  109. cout<<*is<<" ";
  110. }cout<<endl;
  111. cout<<"spisok passazhirov: ";
  112. for(is=it->passengers.begin(); is!=it->passengers.end(); is++){
  113. cout<<*is<<" ";
  114. }cout<<endl;
  115. pr("kakuyu svedeniyu vi hoteli by izmenit? vvodite nomer vybora\n");
  116. cout<<"0. udalit reis"<<endl;
  117. cout<<"1. konechniy punct naznacheniya"<<endl;
  118. cout<<"2. tip"<<endl;
  119. cout<<"3. vremya otpravleniya"<<endl;
  120. cout<<"4. vremya pribitya"<<endl;
  121. cout<<"5. goroda sledovaniya"<<endl;
  122. cout<<"6. passazhiry"<<endl;
  123. cin>>q;
  124. if(q == 0){
  125. cout<<"vi deystvitelno hotite udalit etot reis?"<<endl;
  126. cout<<"0. net"<<endl;
  127. cout<<"1. da"<<endl;
  128. cin>>q;
  129. if(q == 1){
  130. kucha.erase(it);
  131. }
  132. continue;
  133. }
  134. else if(q == 1){
  135. cout<<"vvodite noviy konechniy punkt naznacheniya: ";
  136. nf = *it;
  137. kucha.erase(it);
  138. cin>>nf.final_punct;
  139. kucha.insert(nf);
  140. }
  141. else if(q == 2){
  142. cout<<"vvodite noviy tip: ";
  143. nf = *it;
  144. kucha.erase(it);
  145. cin>>nf.flight_type;
  146. kucha.insert(nf);
  147. }
  148. else if(q == 3){
  149. cout<<"vvodite novoe vremya otpravleniya v formate mm:hh den nedeli dd.mm.gggg: ";
  150. nf = *it;
  151. kucha.erase(it);
  152. cin>>nf.flight_time;
  153. cin>>nf.flight_day;
  154. cin>>nf.flight_date;
  155. kucha.insert(nf);
  156. }
  157. else if(q == 4){
  158. cout<<"vvodite novoe vremya pribytya v formate mm:hh den nedeli dd.mm.gggg: ";
  159. nf = *it;
  160. kucha.erase(it);
  161. cin>>nf.arrival_time;
  162. cin>>nf.arrival_day;
  163. cin>>nf.arrival_date;
  164. kucha.insert(nf);
  165. }
  166. else if(q == 5){
  167. nf = *it;
  168. kucha.erase(it);
  169. nf.cities.clear();
  170. pr("vvodite noviy spisok gorodov sledovaniya etogo reisa cherez Enter. vvodite -1 v konce spiski ");
  171. while(1){
  172. cin>>s;
  173. if(s == "-1"){
  174. break;
  175. }
  176. nf.cities.insert(s);
  177. }
  178. kucha.insert(nf);
  179. }
  180. else if(q == 6){
  181. nf = *it;
  182. kucha.erase(it);
  183. nf.passengers.clear();
  184. pr("vvodite noviy spisok passazhirov etogo reisa cherez Enter. vvodite -1 v konce spiski");
  185. while(1){
  186. cin>>s;
  187. if(s == "-1"){
  188. break;
  189. }
  190. nf.passengers.insert(s);
  191. }
  192. kucha.insert(nf);
  193. }
  194. }
  195.  
  196. }
  197. else if(q == 2){
  198. pr("Chto imeno vi hoteli by uznat\n");
  199. pr("0. Dostupnie punkti naznacheniya – konechnie i promejutochnie po date otpravleniya\n");
  200. pr("1. Vozmozhnie daty otpravleniya, nomera reisov i vremya otpravleniya po punktu naznacheniya\n");
  201. cin>>f;
  202. if(f == 0){
  203. pr("vvodite datu otpravleniya v formate dd.mm.gggg: ");
  204. cin>>s;
  205. pr("\nDostupnie punkti naznacheniya:\n");
  206. for(it=kucha.begin(); it!=kucha.end(); it++){
  207. if(it->flight_date == s){
  208. for(is=it->cities.begin(); is!=it->cities.end(); is++){
  209. cout<<*is<<endl;
  210. }
  211. }
  212. }
  213. }
  214. else {
  215. pr("vvodite punkt naznacheniya: ");
  216. cin>>s;
  217. pr("\nVozmozhnie daty otpravleniya, nomera reisov i vremya otpravleniya:\n");
  218. for(it=kucha.begin(); it!=kucha.end(); it++){
  219. if(it->final_punct == s){
  220. cout<<"reis: "<<it->flight_number<<" vremya: "<<it->flight_time<<" data: "<<it->flight_date<<endl;
  221. }
  222. }
  223. }
  224. }
  225. else if(q == 3){
  226. pr("Vvodite znacheniyu parametrov. Vvodite -1 esli vy ne hotite iskat po dannomu parametru\n");
  227. pr("punkt naznacheniya: ");
  228. cin>>p_naz;
  229. pr("data i vremya otptravleniya: ");
  230. cin>>dt;
  231. pr("nomer reisa: ");
  232. cin>>f;
  233. pr("\nSpisok passazhirov po znacheniyu dannih parametrov:\n");
  234. for(it=kucha.begin(); it!=kucha.end(); it++){
  235. if((p_naz == "-1" || it->final_punct == p_naz) && (dt == "-1" || it->flight_date == dt) && (f == -1 || it->flight_number == f)){
  236. for(is=it->passengers.begin(); is!=it->passengers.end(); is++){
  237. cout<<*is<<endl;
  238. }
  239. }
  240. }
  241. }
  242. }
  243. return 0;
  244. }
Advertisement
Add Comment
Please, Sign In to add comment