fork download
  1. #include<stdio.h>
  2. #define deque_size 10000
  3.  
  4. int deque[deque_size]={0,};
  5. int f=0;
  6. int b=deque_size-1;
  7.  
  8. void push_front();
  9. void push_back();
  10. void pop_front();
  11. void pop_back();
  12. void size();
  13. void empty();
  14. void front();
  15. void back();
  16.  
  17. int main(void){
  18. int num_of_order;
  19. char order[20];
  20. scanf("%d", &num_of_order);
  21. int i;
  22.  
  23. for(i=0; i<num_of_order; i++){
  24. scanf("%s", order);
  25. if(strcmp(order,"push_front") == 0) push_front();
  26. else if(strcmp(order,"push_back") == 0) push_back();
  27. else if(strcmp(order,"pop_front") == 0) pop_front();
  28. else if(strcmp(order,"pop_back") == 0) pop_back();
  29. else if(strcmp(order,"size") == 0) size();
  30. else if(strcmp(order,"empty") == 0) empty();
  31. else if(strcmp(order,"front") == 0) front();
  32. else if(strcmp(order,"back") == 0) back();
  33. }
  34.  
  35.  
  36. return 0;
  37. }
  38.  
  39. void push_front(){
  40. int num;
  41. scanf("%d", &num);
  42. deque[f] = num;
  43. f++;
  44. }
  45. void push_back(){
  46. int num;
  47. scanf("%d", &num);
  48. deque[b] = num;
  49. b--;
  50. }
  51. void pop_front(){
  52. if(deque[f-1]!=0 && f-1>=0){
  53. printf("%d\n", deque[f-1]);
  54. deque[f-1]=0;
  55. f--;
  56. }
  57. else if(deque[deque_size-1]!=0){
  58. printf("%d\n", deque[deque_size-1]);
  59. deque[deque_size-1]=0;
  60. // b++;
  61. }
  62. else
  63. printf("-1\n");
  64. }
  65. void pop_back(){
  66. if(deque[b+1]!=0 && b+1<10000){
  67. printf("%d\n", deque[b+1]);
  68. deque[b+1]=0;
  69. b++;
  70. }
  71. else if(deque[0]!=0){
  72. printf("%d\n", deque[0]);
  73. deque[0]=0;
  74. // f--;
  75. }
  76. else
  77. printf("-1\n");
  78. }
  79. void size(){
  80. int count=0;
  81. int i;
  82. for(i=0; i<deque_size; i++){
  83. if(deque[i]!=0)
  84. count++;
  85. }
  86. printf("%d\n", count);
  87. }
  88. void empty(){
  89. if(b-f==deque_size-1)
  90. printf("1\n");
  91. else
  92. printf("0\n");
  93. }
  94. void front(){
  95. if(deque[f-1]!=0 && f-1>=0)
  96. printf("%d\n", deque[f-1]);
  97. else if(deque[deque_size-1]!=0)
  98. printf("%d\n", deque[deque_size-1]);
  99. else
  100. printf("-1\n");
  101. }
  102. void back(){
  103. if(deque[b+1]!=0 && b+1<10000)
  104. printf("%d\n", deque[b+1]);
  105. else if(deque[0]!=0)
  106. printf("%d\n", deque[0]);
  107. else
  108. printf("-1\n");
  109.  
  110. }
Success #stdin #stdout 0s 4484KB
stdin
22
front
back
pop_front
pop_back
push_front 1
front
pop_back
push_back 2
back
pop_front
push_front 10
push_front 333
front
back
pop_back
pop_back
push_back 20
push_back 1234
front
back
pop_back
pop_back
stdout
-1
-1
-1
-1
1
1
2
2
333
-1
-1
-1
333
1234
1234
20