Advertisement
Guest User

Untitled

a guest
Jan 29th, 2015
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.05 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <vector>
  3. #include <stack>
  4. #include <string>
  5. #include <iostream>
  6. #include <algorithm>
  7. #include <cmath>
  8. #include <cstdio>
  9. #include <cstdlib>
  10. #include <fstream>
  11. #include <map>
  12. #include <set>
  13. #include <deque>
  14. #include <sstream>
  15. #include <queue>
  16. #include <string.h>
  17. #pragma comment(linker,"/STACK:16777216")
  18.  
  19. using namespace std;
  20.  
  21. //Loops
  22. #define FOR(i,a,b) for(int (i) = (a); (i) <= (b); ++(i))
  23. #define ROF(i,a,b) for(int (i) = (a); (i) >= (b); --(i))
  24. #define rep(i,n) for (int (i) = 0; (i) < (n); ++(i))
  25. #define fe(i,a) for (int (i) = 0; (i) < int((a).size()); ++(i))
  26. #define MEM(a,b) memset((a),(b),sizeof(a))
  27.  
  28. //Constants
  29. #define inf 1000000000
  30. #define pi 2*acos(0.0)
  31. #define N 200010
  32. #define eps 1e-9
  33.  
  34. //Functions
  35. #define pb push_back
  36. #define ppb pop_back
  37. #define all(c) (c).begin(), (c).end()
  38. #define sz(x) int((x).size())
  39. #define sqr(a) (a)*(a)
  40.  
  41. //Pairs
  42. #define mp(a,b) make_pair((a), (b))
  43. #define X first
  44. #define Y second
  45.  
  46. //Input-Output
  47. #define FREOPEN(a,b) freopen(a,"r",stdin); freopen(b,"w",stdout);
  48.  
  49. typedef vector<int> vint;
  50. typedef long long ll;
  51. typedef pair<int, int> pii;
  52.  
  53. const long long mod = 1ll << 32;
  54.  
  55. class Deque{
  56. private :
  57.   struct Node{
  58.       Node *next, *prev;
  59.       int val;
  60.       Node(int _val) : val(_val), prev(NULL), next(NULL) {}
  61.   };
  62.   typedef Node * PNode;
  63.   PNode tail;
  64. public :
  65.   Deque(){
  66.       tail = NULL;
  67.   }
  68.   void push_back(int value){
  69.       PNode cur = new Node(value);
  70.       if (tail == NULL){
  71.           tail = cur;
  72.           tail->next = tail;
  73.           tail->prev = tail;
  74.       }
  75.       else {
  76.           cur->next = tail->next;
  77.           tail->next->prev = cur;
  78.           tail->next = cur;
  79.           cur->prev = tail;
  80.           tail = cur;
  81.       }
  82.   }
  83.  
  84.   void push_front(int value){
  85.       PNode cur = new Node(value);
  86.       if (tail == NULL){
  87.           tail = cur;
  88.           tail->next = tail;
  89.           tail->prev = tail;
  90.       }
  91.       else {
  92.           cur->next = tail->next;
  93.           tail->next->prev = cur;
  94.           tail->next = cur;
  95.           cur->prev = tail;
  96.       }
  97.   }
  98.  
  99.   int pop_back(){
  100.       int ans = tail->val;
  101.       PNode p = tail->next;
  102.       if (p != tail){
  103.           tail = tail->prev;
  104.           tail->next = p;
  105.       }
  106.       else tail = NULL;
  107.       return ans;
  108.   }
  109.  
  110.   int pop_front(){
  111.       int ans = tail->next->val;
  112.       if (tail->next != tail)tail->next = tail->next->next; else
  113.           tail = NULL;
  114.       return ans;
  115.   }
  116. };
  117.  
  118. Deque v[150000];
  119.  
  120. int main() {
  121.   //FREOPEN("input.txt", "output.txt");
  122.   int test,a,b;
  123.   string s;
  124.   scanf("%d\n", &test);
  125.   while (test--){
  126.       cin >> s;
  127.       scanf("%d", &a);
  128.       a--;
  129.       if (s == "pushfront"){
  130.           scanf("%d", &b);
  131.           v[a].push_front(b);
  132.       } else
  133.       if (s == "pushback"){
  134.           scanf("%d", &b);
  135.           v[a].push_back(b);
  136.       } else
  137.       if (s == "popfront")printf("%d\n", v[a].pop_front()); else
  138.       if (s == "popback") printf("%d\n", v[a].pop_back());
  139.       scanf("\n");
  140.   }
  141.   return 0;
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement