Submission #772970

#TimeUsernameProblemLanguageResultExecution timeMemory
772970LucaIlieWorst Reporter 3 (JOI18_worst_reporter3)C++17
7 / 100
1048 ms11108 KiB
#include <bits/stdc++.h> #define int long long using namespace std; struct period { int per, l, r; }; const int MAX_N = 5e5 + 1; const int MAX_T = 2e9; int d[MAX_N], per[MAX_N]; int higher( int x, int n ) { return ((int)ceil( (double)n / x )) * x; } int lower( int x, int n ) { return ((int)floor( (double)n / x )) * x; } vector<period> periods; signed main() { int n, q; cin >> n >> q; d[0] = 1; for ( int i = 1; i <= n; i++ ) cin >> d[i]; int maxx = 1, pos = 0; per[0] = 1; for ( int i = 1; i <= n; i++ ) { per[i] = higher( per[pos], d[i] ); if ( d[i] > maxx ) { periods.push_back( { per[pos], pos, i - 1 } ); maxx = d[i]; pos = i; } if ( periods.size() > 40 || per[i] > MAX_T ) break; } periods.push_back( { per[pos], pos, n } ); if ( periods.size() > 42 ) return 1; while ( q-- ) { int t, l, r, ans = 0; cin >> t >> l >> r; for ( period p: periods ) { int lp = lower( p.per, t ) - p.r, rp = lower( p.per, t ) - p.l; ans += max( 0LL, min( rp, r ) - max( lp, l ) + 1 ); } cout << ans << "\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...