提交时间:2025-02-07 15:12:09

运行 ID: 36075

#include<bits/stdc++.h> #define int long long #define doub long double using namespace std; const int maxn=2e5+7; int n,q,L,R; int a[maxn]; int truncc(doub x){ return x<0?ceill(x):floorl(x); } int op[maxn],x[maxn],s[maxn],t[maxn]; inline int F(int d){ for(int i=1;i<=q;i++){ if(op[i]==1){ if(d>=x[i])d=t[i]*(d+s[i]); } else if(op[i]==2){ if(d<=x[i])d=truncc(1.0L*(d-s[i])/t[i]); } } return d; } signed main(){ #ifndef ONLINE_JUDGE freopen("arithmetic.in","r",stdin); freopen("arithmetic.out","w",stdout); #endif int LB=1e9,RB=-1e9; cin>>n>>q>>L>>R; for(int i=1;i<=n;i++)cin>>a[i],LB=min(LB,a[i]),RB=max(RB,a[i]); for(int i=1;i<=q;i++)cin>>op[i]>>x[i]>>s[i]>>t[i]; int GL,GR; int l=LB,r=RB; while(l<r){ int mid=l+r>>1; if(L<=F(mid))r=mid; else l=mid+1; } GL=l; l=LB,r=RB; while(l<r){ int mid=l+r+1>>1; if(F(mid)<=R)l=mid; else r=mid-1; } GR=l; int cnt=0; for(int i=1;i<=n;i++)if(GL<=a[i]&&a[i]<=GR)++cnt; cout<<cnt<<endl; return 0; }