Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
36014 | yinzihe | 【S】T1 | C++ | 通过 | 100 | 280 MS | 8192 KB | 899 | 2025-02-07 14:09:02 |
#include<bits/stdc++.h> #define int long long using namespace std; int a[200010],b[200010]; struct node{ int op,x,s,t; }ask[200010]; int n,q,l,r; int limit; int tr(double x){return (int)x;} int judge(int now) { if(b[now]) return a[now]; for(int i=1;i<=q;i++) { int op=ask[i].op,x=ask[i].x,s=ask[i].s,t=ask[i].t; if(op==1&&a[now]>=x) a[now]=t*(a[now]+s); else if(op==2&&a[now]<=x) a[now]=(a[now]-s)/t; } b[now]=1; return a[now]; } int solve(int x) { int l=1,r=n,ans; while(l<=r) { int mid=(l+r)/2; if(judge(mid)<=x) l=mid+1,ans=mid; else r=mid-1; } return ans; } 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>>ask[i].op>>ask[i].x>>ask[i].s>>ask[i].t; cout<<solve(r)-solve(l-1); }