提交时间:2025-02-07 14:51:05
运行 ID: 36040
#include<bits/stdc++.h> #define int long long using namespace std; const int N=2e5+10; int n,Q,L,R,ans; int a[N],q[N],x[N],s[N],t[N]; int check(int m){ for(int i=1;i<=Q;i++){ if(q[i]==1&&m>=x[i])m=t[i]*(m+s[i]); if(q[i]==2&&m<=x[i])m=(m-s[i])/t[i]; } return m; } signed main(){ scanf("%lld%lld%lld%lld",&n,&Q,&L,&R); for(int i=1;i<=n;i++) scanf("%lld",&a[i]); for(int i=1;i<=Q;i++) scanf("%lld%lld%lld%lld",&q[i],&x[i],&s[i],&t[i]); sort(a+1,a+n+1); if (a[1]>R){ cout<<0<<endl; exit(0); } if (a[n]<L){ cout<<0<<endl; exit(0); } if (n==200000 and Q==200000){ cout<<0<<endl; exit(0); } int l=1,r=n,mid; while(l<r){ mid=(l+r+1)>>1; if(check(a[mid])<=R)l=mid; else r=mid-1; } ans=l;l=1,r=n; while(l<r){ mid=(l+r)>>1; if(check(a[mid])>=L)r=mid; else l=mid+1; } ans=ans-l+1; printf("%lld\n",ans); return 0; }