Solution of Ticket

    1 #include <iostream>
    2 #include <string>
    3 #include <map>
    4 #include <deque>
    5 using namespace std;
    6 map<string,string> coresp;
    7 map<string,bool> e_nume;
    8 deque<string> coada[105];
    9 map<string,int> unde;
   10 
   11 int main() {
   12     int n,m,t,i,tip,x;
   13     cin>>n>>m;
   14     string nume,prenume;
   15     for(i=0;i<m;i++) {
   16         cin>>nume>>prenume;
   17         coresp[nume]=prenume,coresp[prenume]=nume;
   18         e_nume[nume]=1;
   19         unde[nume]=-1;
   20     }
   21     cin>>t;
   22     for(i=0;i<t;i++){
   23         cin>>tip;
   24         if(tip==1) {
   25             cin>>x;
   26             deque<string>::iterator it;
   27             for(it=coada[x].begin();it!=coada[x].end();it++)
   28                 unde[*it]=-1;
   29             coada[x].clear();
   30         } else if(tip==2){
   31             cin>>x>>nume;
   32             if(!e_nume[nume])
   33                 nume=coresp[nume];
   34             unde[nume]=x;
   35             coada[x].push_back(nume);
   36         } else if(tip==3){
   37             cin>>x;
   38             unde[coada[x].front()]=-1;
   39             coada[x].pop_front();
   40         } else if(tip==5){
   41             cin>>nume;
   42             if(!e_nume[nume])
   43                 nume=coresp[nume];
   44             cout<<unde[nume]<<'\n';
   45         } else{
   46             cin>>x;
   47             if(coada[x].empty()){
   48                 cout<<"-1\n";
   49                 continue;
   50             }
   51             deque<string>::reverse_iterator it;
   52             it=coada[x].rbegin();
   53             cout<<*it<<' '<<coresp[*it];
   54             for(it++;it!=coada[x].rend();it++)
   55                 cout<<' '<<*it<<' '<<coresp[*it];
   56             cout<<'\n';}
   57     }
   58     return 0;
   59 }
   60 
(Sursa de Andrei Constantinescu)
Questions?

Sponsors Gold