Advertisement
Guest User

Untitled

a guest
Dec 16th, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.43 KB | None | 0 0
  1. #include<iostream>
  2.  
  3. using namespace std;
  4.  
  5. int A[2001], sizeA = 0;
  6.  
  7. void push(int x) {
  8. A[sizeA++] = x;
  9. }
  10.  
  11. int top() {
  12. return A[sizeA - 1];
  13. }
  14.  
  15. int pop() {
  16. return A[--sizeA];
  17. }
  18.  
  19. void print_stack() {
  20. for (int i = 0; i < sizeA; ++i) {
  21. cout << A[i] << " ";
  22. }
  23. cout << "\n";
  24. }
  25.  
  26. int main() {
  27. int n, x, res = 0, curcnt = 0;
  28. cin >> n;
  29. push(-1); // значение на дне стека - "барьерный элемент" для корректной работы для первого ввода (вызов top())
  30. for (int i = 0; i < n; ++i) {
  31. cin >> x;
  32.  
  33. if (x != top()) {
  34. if (curcnt >= 3) {
  35. res += curcnt;
  36. for (int j = 0; j < curcnt; j++) {
  37. pop();
  38. }
  39. curcnt = pop();
  40. }
  41. }
  42.  
  43. if (x == top()) {
  44. push(x);
  45. curcnt++;
  46. } else {
  47. push(curcnt); //первый раз будет записан 0, но это не влияет на программу
  48. curcnt = 1;
  49. push(x);
  50. }
  51. //print_stack();
  52. }
  53.  
  54. //для проверки последней серии повторов
  55. if (curcnt >= 3) {
  56. res += curcnt;
  57. for (int j = 0; j < curcnt; j++) {
  58. pop();
  59. }
  60. }
  61. //print_stack();
  62. cout << res << endl;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement