Submission #233859

#TimeUsernameProblemLanguageResultExecution timeMemory
233859oolimryWorst Reporter 3 (JOI18_worst_reporter3)C++14
100 / 100
424 ms25464 KiB
#include <bits/stdc++.h> using namespace std; int arr[500005]; int period[500005]; struct group{ int period, L, R; }; vector<group> G; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n, q; cin >> n >> q; for(int i = 1;i <= n;i++) cin >> arr[i]; period[0] = 1; for(int i = 1;i <= n;i++){ int times = arr[i] / period[i-1]; if(arr[i] % period[i-1] != 0) times++; period[i] = times * period[i-1]; } int curR = 0; for(int i = 0;i <= n;i++){ if(i == n || period[i] != period[i+1]){ G.push_back({period[i], -i, -curR}); curR = i+1; } } while(q--){ int t, l, r; cin >> t >> l >> r; int ans = 0; for(group g : G){ int move = t / g.period; int L = g.L + move * g.period; int R = g.R + move * g.period; ///l, r are the query range. L, R are the range of people ans += max(0,min({r-l, R-L, R-l, r-L})+1); ///overlap of the 2 ranges } cout << ans << "\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...