Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
36076 | 1233456a | 【S】T1 | C++ | 通过 | 100 | 280 MS | 8212 KB | 1321 | 2025-02-07 15:12:14 |
#include <bits/stdc++.h> using namespace std; long long n,Q,L,R,a[214514],x[214514],q[214514],s[214514],t[214514],b[214514]; long long check(long long w) { if(b[w]) { return a[w]; } for(long long i=1;i<=Q;i++) { if(q[i]==1) { if(a[w]>=x[i]) { a[w]+=s[i],a[w]*=t[i]; } } else{ if(a[w]<=x[i]) { if(a[w]-s[i]>=0) { a[w]-=s[i],a[w]/=t[i]; } else { a[w]-=s[i];a[w]=-a[w]; a[w]/=t[i];a[w]=-a[w]; } } } } b[w]=1; return a[w]; } long long search1(long long x) { long long l=1,r=n; while(l<r) { long long mid=(l+r)/2; if(check(mid)<=x) { l=mid+1; } else { r=mid; } } return l; } long long search2(long long x) { long long l=1,r=n; while(l<r) { long long mid=(l+r)/2+1; if(check(mid)>=x) { r=mid-1; } else { l=mid; } } return r; } int main() { cin>>n>>Q>>L>>R; for(long long i=1;i<=n;i++) { cin>>a[i]; } sort(a+1,a+1+n); for(long long i=1;i<=Q;i++) { cin>>q[i]>>x[i]>>s[i]>>t[i]; } cout<<search1(R)-search2(L)<<"\n"; }