fork(2) download
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. struct deque{
  6. #define Size 200000
  7. int start, end;
  8. int folder[Size];
  9.  
  10. deque(){
  11. start = end = Size/2;
  12. }
  13. void push_front(int var){
  14. folder[--start] = var;
  15. cout << "ok" << endl;
  16. }
  17. void push_back(int var){
  18. folder[end++] = var;
  19. cout << "ok" << endl;
  20. }
  21. void pop_front(){
  22. cout << folder[start++] << endl;
  23. }
  24. void pop_back(){
  25. cout << folder[--end] << endl;
  26. }
  27. void front(){
  28. cout << folder[start] << endl;
  29. }
  30. void back(){
  31. cout << folder[end-1] << endl;
  32. }
  33. void size(){
  34. cout << end-start << endl;
  35. }
  36. void clear(){
  37. start = end = Size/2;
  38. cout << "ok" << endl;
  39. }
  40. };
  41.  
  42. int main() {
  43. string s;
  44. deque deq;
  45. int n;
  46.  
  47. while (cin >> s){
  48. if (s == "push_front"){
  49. cin >> n;
  50. deq.push_front(n);
  51. }
  52. else if (s == "push_back"){
  53. cin >> n;
  54. deq.push_back(n);
  55. }
  56. else if (s == "pop_front") deq.pop_front();
  57. else if (s == "pop_back") deq.pop_back();
  58. else if (s == "front") deq.front();
  59. else if (s == "back") deq.back();
  60. else if (s == "size") deq.size();
  61. else if (s == "clear") deq.clear();
  62. else if (s == "exit"){
  63. cout << "bye";
  64. return 0;
  65. }
  66. }
  67. }
Success #stdin #stdout 0s 15896KB
stdin
push_back 3
push_front 14
size
clear
push_front 1
back
push_back 2
front
pop_back
size
pop_front
size
exit
stdout
ok
ok
2
ok
ok
1
ok
1
2
1
1
0
bye