OIG VIII - naklejki

// https://szkopul.edu.pl/problemset/problem/naklejki/site/?key=statement
// VIII OIG — Zawody drużynowe, finał.

#include <iostream>
#include <vector>

constexpr int sizik = 100 * 1001;

std::pair<int, int> arr[sizik];

int main() {
    std::ios_base::sync_with_stdio(0);
    std::cin.tie(0);
    std::cout.tie(0);

    int n, m;
    std::cin >> n >> m;

    std::string s;
    std::cin >> s;

    for (int i = 1; i <= m; i++) {
        int l, p;
        std::cin >> l >> p;

        l--;
        p--;

        arr[p] = {i, p - l};
    }

    int curr = 0, curr_num = 0;

    for (int i = 0; i < s.size(); i++) {
        if (arr[i].first > curr) {
            curr = arr[i].first;
            curr_num = arr[i].second;
        }

        s[i] = s[i - curr_num];
    }

    std::cout << s << '\n';

    return 0;
}