Submission #796672

#TimeUsernameProblemLanguageResultExecution timeMemory
796672KahouWorst Reporter 3 (JOI18_worst_reporter3)C++14
100 / 100
328 ms25352 KiB
#include<bits/stdc++.h> using namespace std; #define F first #define S second #define endl '\n' #define mk make_pair typedef long long ll; typedef pair<int, int> pii; typedef pair<ll, ll> pll; const int N = 5e5 +50, LG = 36; int n, q, m; ll d[N]; pll P[LG]; int get(int x, ll t) { int out = 0; for (int i = 1; i <= m; i++) { ll v = t-t%P[i].F; if (P[i].S + v < x) break; out += min(P[i].S+v-x+1, P[i].S-P[i+1].S); } return out; } void solve() { cin >> n >> q; d[0] = 1; P[++m] = {1, 0}; for (int i = 1; i <= n; i++) { cin >> d[i]; d[i] = ((d[i]+d[i-1]-1)/d[i-1])*d[i-1]; if (d[i] != d[i-1]) { P[++m] = {d[i], -i}; } } P[m+1].S = -(n+1); for (int i = 1; i <= q; i++) { ll t, l, r; cin >> t >> l >> r; cout << get(l, t) - get(r+1, t) << endl; } } int main() { ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...