Submission #1276238

#TimeUsernameProblemLanguageResultExecution timeMemory
1276238namhhWorst Reporter 3 (JOI18_worst_reporter3)C++20
100 / 100
341 ms11228 KiB
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair<int,int>
#define fi first
#define se second
const int N = 5e5+5;
int n,q,d[N],hori[N];
signed main(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cin >> n >> q;
	for(int i = 1; i <= n; i++) cin >> d[i];
	hori[1] = d[1];
	for(int i = 2; i <= n; i++) hori[i] = ((d[i]+hori[i-1]-1)/hori[i-1])*hori[i-1];
	while(q--){
		int l,r,t;
		cin >> t >> l >> r;
		int l1 = 0;
		int r1 = n;
		int l2 = 1e9;
		int r2 = -1;
		while(l1 <= r1){
			int mid = (l1+r1)/2;
			int kaori;
			if(mid == 0) kaori = t;
			else kaori = hori[mid]*(t/hori[mid])-mid;
			if(kaori >= l){
				r2 = mid;
				l1 = mid+1;
			}
			else r1 = mid-1;
		}
		l1 = 0;
		r1 = n;
		while(l1 <= r1){
			int mid = (l1+r1)/2;
			int kaori;
			if(mid == 0) kaori = t;
			else kaori = hori[mid]*(t/hori[mid])-mid;
			if(kaori <= r){
				l2 = mid;
				r1 = mid-1;
			}
			else l1 = mid+1;
		}
		//cout << l2 << " " << r2 << "\n";
		if(r2 < l2) cout << 0 << "\n";
		else cout << r2-l2+1 << "\n";
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...