Submission #1350941

#TimeUsernameProblemLanguageResultExecution timeMemory
1350941Jawad_Akbar_JJWorst Reporter 3 (JOI18_worst_reporter3)C++20
7 / 100
582 ms5248 KiB
#include <iostream>
#include <vector>

using namespace std;
vector<int> Nw;
int d[1<<19], cnt[1<<19];

void Add(int &ans, int l1, int r1, int l2, int r2){
	ans += max(0, min(r1, r2) - max(l1, l2) + 1);
}

int main(){
	int n, q;
	cin>>n>>q;

	for (int i=1, lst;i<=n;i++){
		cin>>d[i];

		if (d[i] > d[i-1]){
			Nw.push_back(i);
			if (i - 1)
				d[i] = ((d[i] + d[i-1]) / d[i-1]) * d[i-1];
			lst = i;
		}
		else
			d[i] = d[i-1], cnt[lst]++;
	}

	for (int i=1;i<=q;i++){
		int t, l, r, ans = 0;
		cin>>t>>l>>r;
		for (int j : Nw){
			int L = t - t % d[j];
			Add(ans, l, r, -j + L - cnt[j], -j + L);
		}
		Add(ans, l, r, t, t);
		cout<<ans<<'\n';
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...