提交时间:2025-02-07 15:58:42

运行 ID: 36107

#include<bits/stdc++.h> using namespace std; long long n,_,l,r,a[200005],op[200005],x[200005],s[200005],t[200005]; inline long long ck(long long x){ long long T=a[x]; for(int i=1;i<=_;i++){ if(op[i]==1){ T=(s[i]+T)*t[i]; } else{ T=(T-s[i])/t[i]; } } return T; } int main(){ scanf("%lld%lld%lld%lld",&n,&_,&l,&r); for(int i=1;i<=n;i++){ scanf("%lld",&a[i]); } sort(a+1,a+n+1); for(int i=1;i<=_;i++){ scanf("%lld%lld%lld%lld",&op[i],&x[i],&s[i],&t[i]); } long long L=1,R=n,ansl=0,ansr=0; while(L<=R){ long long mid=(L+R)/2; if(ck(mid)>=l){ ansl=mid; L=mid+1; } else R=mid-1; } L=1,R=n; while(L<=R){ long long mid=(L+R)/2; if(ck(mid)<=r){ ansr=mid; R=mid-1; } else L=mid+1; } printf("%lld",ansr-ansl); return 0; }