제출 #1370297

#제출 시각아이디문제언어결과실행 시간메모리
1370297pastaWorst Reporter 3 (JOI18_worst_reporter3)C++20
100 / 100
302 ms7360 KiB
//#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
//#pragma GCC optimize("O3")
//#pragma GCC optimize("unroll-loops")

#include <bits/stdc++.h>
using namespace std;

#define int long long

typedef long long ll;
typedef pair<ll, ll> pll;
typedef pair<int, int> pii;
typedef long double ld;

#define migmig ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define pb push_back
#define F first
#define S second
#define SZ(x) ll((x).size())
#define all(x) (x).begin(), (x).end()
#define deb(x) cerr << #x << " = " << x << '\n'
#define dokme(x) { cout << x << endl; return 0; }
mt19937_64              rng(chrono::steady_clock::now().time_since_epoch().count());
	
const int maxn = 1e6 + 10;
const int inf = 1e9;
const int LOG = 30;
const int mod = 1e9 + 7;
const int sq = 450;

//#define mid ((l + r) / 2)
#define lc (id * 2)
#define rc (lc + 1)

int n, q, f[maxn];

int get(int t, int x) {
	int l = -1, r = n + 1;
	while (r - l > 1) {
		int mid = (l + r) / 2;
		if ((t / f[mid]) * f[mid] - mid >= x)
			l = mid;
		else
			r = mid;
	}
	return l;
}
signed main() {
	migmig;
	f[0] = 1;
	cin >> n >> q;
	for (int i = 1; i <= n; i++) {
		int D; cin >> D;
		int x = (D + f[i - 1] - 1) / f[i - 1];
		f[i] = f[i - 1] * x;
	}
	while (q--) {
		int t, l, r;
		cin >> t >> l >> r;
		cout << get(t, l) - get(t, r + 1) << '\n';
	}
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…