Submission #1220411

#TimeUsernameProblemLanguageResultExecution timeMemory
1220411toast12Worst Reporter 3 (JOI18_worst_reporter3)C++20
100 / 100
293 ms5336 KiB
#include <bits/stdc++.h>
using namespace std;

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(NULL);
    int n, q;
    cin >> n >> q;
    vector<int> d(n+1);
    for (int i = 1; i <= n; i++) cin >> d[i];
    d[0] = 1;
    for (int i = 1; i <= n; i++) {
        d[i] = ((d[i]/d[i-1]) + (d[i] % d[i-1] == 0 ? 0 : 1)) * d[i-1];
    }
    while (q--) {
        int t, l, r;
        cin >> t >> l >> r;
        int lo = 0, hi = n;
        while (lo < hi) {
            // last person whose location is >= l
            int mid = (lo+hi+1)/2;
            if (mid == 0) break;
            int loc = (t/d[mid])*d[mid] - mid;
            if (loc >= l) lo = mid;
            else hi = mid-1;
        }
        int x = lo;
        lo = 0, hi = n;
        int x2 = 0;
        while (lo < hi) {
            // first person whose location is > r
            int mid = (lo+hi+1)/2;
            if (mid == 0) break;
            int loc = (t/d[mid]) * d[mid] - mid;
            if (loc > r) lo = mid;
            else hi = mid-1;
        }
        x2 = lo;
        cout << x-x2 + (t >= l && t <= r) << '\n';
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...