Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
36011 | 申东铉 | 【S】T1 | C++ | 通过 | 100 | 289 MS | 8056 KB | 986 | 2025-02-07 14:07:01 |
#include <bits/stdc++.h> #define int long long using namespace std; int n,Q,l,r; int a[200005]; int q[200005],x[200005],s[200005],t[200005]; int ans; inline int f (int v) { for (int i = 1;i <= Q;i++) { if (q[i] == 1) { if (v >= x[i]) { v = t[i] * (v + s[i]); } } else { if (v <= x[i]) { v = (v - s[i]) / t[i]; } } } return v; } signed main () { cin >> n >> Q >> l >> r; for (int i = 1;i <= n;i++) { cin >> a[i]; } sort(a + 1,a + n + 1); for (int i = 1;i <= Q;i++) { cin >> q[i] >> x[i] >> s[i] >> t[i]; } int lt,rt,ans1,ans2; lt = 1,rt = n + 1; while (lt < rt) { int mid = (lt + rt) >> 1; if (f(a[mid]) >= l) { rt = mid; } else { lt = mid + 1; } } ans1 = lt; lt = 1,rt = n + 1; while (lt < rt) { int mid = (lt + rt) >> 1; if (f(a[mid]) <= r) { lt = mid + 1; } else { rt = mid; } } ans2 = lt; ans = max(ans2 - ans1,0ll); cout << ans << endl; return 0; }