Решение задачи Блоки с Acmp

Без пояснения   Просмотров: 41


Дана последовательность из N целых чисел. Необходимо «сжать» данную последовательность, объединив одинаковые подряд идущие элементы в блоки.

Код

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n, k = 1;
    cin >> n;
    vector<int> a(n);
    cin >> a[0];
    vector<int> ch;
    ch.push_back(a[0]);
    vector<int> quan;
    for(int i = 1; i < n; ++i){
        cin >> a[i];
    }
    a.push_back(0);
//        1 1 2 2  3
//ch      1
//quan    2
    for(int i = 1; i < a.size(); ++i){
        if(ch[ch.size() - 1] != a[i]){
            quan.push_back(k);
            ch.push_back(a[i]);
            k = 1;
        }
        else{
            ++k;
        }
    }
    cout << quan.size() << " ";
    for(int i = 0; i < quan.size(); ++i){
        cout << "[" << ch[i] << " " << quan[i] << "] ";
    }

    return 0;
}

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться