v 0. Pasted by slipstak2 as cpp at 2011-11-01 07:56:14 MSK and set expiration to never.

Paste will expire never.

  1. // Очно-заочный кружок
  2. // Занятие №9. Дополнительные олимпиадные задачи
  3. // Задача C. Переключение между окнами
  4. // ibelyaev: 31Oct2011
  5. // http://cppalgo.blogspot.com/2011/04/blog-post.html
  6.  
  7. #include <iostream>
  8. #include <cstdio>
  9. #include <algorithm>
  10. #include <string>
  11. #include <string.h>
  12. #include <cmath>
  13. #include <queue>
  14. #include <vector>
  15. #include <map>
  16. #include <stdlib.h> // for exit(0)
  17. #include <stack>
  18. #include <list>
  19. #include <ctime>
  20. #include <set>
  21.  
  22. using namespace std;
  23.  
  24. list<string> mas;
  25. list<string>::iterator curIt = mas.begin();
  26. int plus_amount(const string &s) {
  27.     int amount = 0;
  28.     for (int i=0;i<s.size();++i)
  29.         amount += s[i] == '+' ? 1 : 0;
  30.     return amount;
  31. }
  32. int main()
  33. {
  34.     freopen("input.txt","r",stdin);
  35.     freopen("output.txt","w",stdout);
  36.  
  37.     ios::sync_with_stdio(false);
  38.     int n;
  39.     cin>>n;
  40.     string command, name;
  41.     getline(cin,command);
  42.     for (int i=0;i<n;++i) {
  43.         getline(cin,command);
  44.         if (command[0] == 'R') {
  45.             name = command.substr(4,command.size() - 4);
  46.             mas.push_back(name);
  47.         }
  48.         else {
  49.             int amount = plus_amount(command);
  50.             curIt = --mas.end();
  51.             for (int j=0;j<amount;++j) {
  52.                 if (curIt == mas.begin())
  53.                     curIt = mas.end();
  54.                 curIt--;
  55.             }
  56.             name = *curIt;
  57.             mas.erase(curIt);
  58.             mas.push_back(name);
  59.         }
  60.         cout<<mas.back()<<endl;
  61.     }
  62.  
  63.     return 0;
  64. }


Editing is locked.