Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- using namespace std;
- int A[2001], sizeA = 0;
- void push(int x) {
- A[sizeA++] = x;
- }
- int top() {
- return A[sizeA - 1];
- }
- int pop() {
- return A[--sizeA];
- }
- void print_stack() {
- for (int i = 0; i < sizeA; ++i) {
- cout << A[i] << " ";
- }
- cout << "\n";
- }
- int main() {
- int n, x, res = 0, curcnt = 0;
- cin >> n;
- push(-1); // значение на дне стека - "барьерный элемент" для корректной работы для первого ввода (вызов top())
- for (int i = 0; i < n; ++i) {
- cin >> x;
- if (x != top()) {
- if (curcnt >= 3) {
- res += curcnt;
- for (int j = 0; j < curcnt; j++) {
- pop();
- }
- curcnt = pop();
- }
- }
- if (x == top()) {
- push(x);
- curcnt++;
- } else {
- push(curcnt); //первый раз будет записан 0, но это не влияет на программу
- curcnt = 1;
- push(x);
- }
- //print_stack();
- }
- //для проверки последней серии повторов
- if (curcnt >= 3) {
- res += curcnt;
- for (int j = 0; j < curcnt; j++) {
- pop();
- }
- }
- //print_stack();
- cout << res << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement