Advertisement
Guest User

Untitled

a guest
Mar 18th, 2018
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.16 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. #include <iomanip>
  5. #include <set>
  6. #include <algorithm>
  7. #include <deque>
  8.  
  9. using namespace std;
  10.  
  11. deque<char> move(deque<char> p, int u)
  12. {
  13. if ((u == 0) || (p.size() == 1)) {
  14. return p;
  15. }
  16. else if (u < 0)
  17. {
  18. for (int i = 0; i < -u; i++)
  19. {
  20. char temp = p.back();
  21. p.pop_back();
  22. p.push_front(temp);
  23. }
  24. }
  25. else
  26. {
  27. for (int i = 0; i < u; i++)
  28. {
  29. char temp = p.front();
  30. p.pop_front();
  31. p.push_back(temp);
  32. }
  33. }
  34.  
  35. return p;
  36. }
  37.  
  38. class Barrel {
  39. int cnt; // Количество шаров в барабане
  40. deque<char> balls; // Дин. массив из cnt символов (буквы на шарах в порядке по часовой стрелке)
  41.  
  42. public:
  43. Barrel(string str = NULL) { // Заполнить барабан шарами-буквами из строчки str
  44. for (int i = 0; i < str.size(); i++) {
  45. this->balls.push_back(str[i]);
  46. }
  47. }
  48. ~Barrel() {
  49. deque<char>().swap(this->balls);
  50. }
  51.  
  52. int count() { // Получить количество шаров в барабане
  53. return this->balls.size();
  54. }
  55.  
  56. void clockwise(int x) { // Сдвинуть барабан на x шаров по часовой стрелке
  57. this->balls = move(this->balls, x);
  58. }
  59. void countercw(int x) { // Сдвинуть барабан на x шаров против часовой стрелки
  60. this->balls = move(this->balls, x);
  61. }
  62. char extract() { // Извлечь первый шар из барабана
  63. char c = this->balls[0];
  64. this->balls.pop_front();
  65. return c;
  66. }
  67.  
  68. deque<char> getBalls() {
  69. return this->balls;
  70. }
  71. };
  72.  
  73.  
  74.  
  75. int main() {
  76. int n;
  77. string start;
  78. cin >> start;
  79. Barrel b(start);
  80. cin >> n;
  81. while (n--) {
  82. int shift;
  83. cin >> shift;
  84. if (shift < 0) {
  85. b.clockwise(shift);
  86. }
  87. else if (shift > 0) {
  88. b.countercw(shift);
  89. }
  90. /*for (char i : b.getBalls()) {
  91. cout << i << ' ';
  92. }
  93. cout << endl;*/
  94. cout << b.extract();
  95. /*for (char i : b.getBalls()) {
  96. cout << i << ' ';
  97. }
  98. cout << endl;*/
  99. }
  100.  
  101. system("pause");
  102. return 0;
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement