Skip to content
On this page

d65_q1a_multiply.cpp

cpp
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
void member_multiply(vector<int> &v,
                     vector<pair<vector<int>::iterator, int>> &multiply) {
    auto multiplyCopy = multiply;

    std::sort(multiplyCopy.begin(), multiplyCopy.end());
    auto multiplyIt = multiplyCopy.cbegin();

    std::vector<int> result;
    for (auto it = v.cbegin(); it != v.cend(); it++) {
        if (multiplyIt == multiplyCopy.cend() || it != multiplyIt->first) {
            result.push_back(*it);
        } else {
            for (int i = 0; i <= multiplyIt->second; i++) {
                result.push_back(*it);
            }
            multiplyIt++;
        }
    }

    v.clear();
    std::copy(result.cbegin(), result.cend(), std::back_inserter(v));
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int n, m;
    cin >> n >> m;
    vector<int> v(n);
    vector<pair<vector<int>::iterator, int>> multiply(m);
    for (int i = 0; i < n; i++) cin >> v[i];
    for (int i = 0; i < m; i++) {
        int a, b;
        cin >> a >> b;
        multiply[i].first = v.begin() + a;
        multiply[i].second = b;
    }
    member_multiply(v, multiply);
    cout << "======= result ========" << endl;
    cout << v.size() << endl;
    for (auto &x : v) {
        cout << x << " ";
    }
    cout << endl;
}

See on GitHub

Last Updated: 15/1/2567 13:25:21 (UTC+7)

Released under the MIT License