Submission #1263512

#TimeUsernameProblemLanguageResultExecution timeMemory
1263512tvgkWorst Reporter 3 (JOI18_worst_reporter3)C++20
100 / 100
161 ms5388 KiB
#include<bits/stdc++.h>
using namespace std;
#define task "a"
#define se second
#define fi first
#define ll long long
#define ii pair<ll, ll>
const long mxN = 5e5 + 7;

struct Segment
{
    int mv, l, r;
};

vector<Segment> vc;
int n, q, a[mxN];

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    //freopen(task".INP", "r", stdin);
    //freopen(task".OUT", "w", stdout);

    cin >> n >> q;
    for (int i = 1; i <= n; i++)
        cin >> a[i];

    vc.push_back({1, 0, 0});
    for (int i = 1; i <= n; i++)
    {
        if (a[i] <= vc.back().mv)
            vc.back().l = -i;
        else
            vc.push_back({(a[i] + vc.back().mv - 1) / vc.back().mv * vc.back().mv, -i, -i});
    }

    for (int i = 1; i <= q; i++)
    {
        int t, u, v;
        cin >> t >> u >> v;

        int ans = 0;
        for (Segment j : vc)
        {
            int num = t / j.mv;
            j.l += j.mv * num;
            j.r += j.mv * num;

            ans += max(0, min(j.r, v) - max(j.l, u) + 1);
        }
        cout << ans << '\n';
    }
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...