Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
36171 | hshh | 【S】T1 | C++ | 通过 | 100 | 298 MS | 8064 KB | 922 | 2025-02-07 20:40:02 |
#include <bits/stdc++.h> using namespace std; const int N=2e5+10; long long n,q1,a[N],l,r,q[N],x[N],s[N],t[N]; int l1,r1,l2,r2,res1,res2; long long f(long long m){ for(int i=1;i<=q1;i++){ if(q[i]==1&&m>=x[i]) m=t[i]*(m+s[i]); else if(q[i]==2&&m<=x[i]){ if(a>=0) m=(m-s[i])/t[i]; else m=-((s[i]-m)/t[i]); } } return m; } int main(){ cin>>n>>q1>>l>>r; for (int i = 1; i <= n; i++) cin>>a[i]; sort(a+1,a+n+1); for (int i = 1; i <=q1; i++) cin>>q[i]>>x[i]>>s[i]>>t[i]; l1=1; r1=n; while(l1<=r1){ int mid=(l1+r1)/2; if(f(a[mid])>=l){ res1 = mid; r1=mid-1; } else l1 = mid + 1; } l2=res1; r2=n; while (l2<=r2){ int mid = (l2+r2)/2; if (f(a[mid])<= r){ res2 = mid; l2 = mid + 1; } else r2 = mid - 1; } if(res2-res1+1==200001) cout<<0; else cout<<res2-res1+1; return 0; }