Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
36146 | zqqq | 【S】T1 | C++ | 通过 | 100 | 171 MS | 7304 KB | 1086 | 2025-02-07 19:46:33 |
#include<bits/stdc++.h> using namespace std; const int N=2e5+10; #define ll long long ll a[N],x[N],s[N],t[N],L,R; int op[N],n,Q; ll calc(ll a){ for(int i=1;i<=Q;i++){ if(op[i]==1&&a>=x[i]){ a=t[i]*(a+s[i]); } if(op[i]==2&&a<=x[i]){ double tmp=(a-s[i])/t[i]; if(tmp>0) a=floor(tmp); else a=ceil(tmp); } } return a; } int solveL(){ int l=1,r=n+1,mi; while(l<r){ mi=(l+r)>>1; if(calc(a[mi])>=L) r=mi; else l=mi+1; } return l; } int solveR(){ int l=0,r=n,mi; while(l<r){ mi=(l+r+1)>>1; if(calc(a[mi])<=R) l=mi; else r=mi-1; } return l; } int main(){ //freopen("arithmetic3.in","r",stdin); //freopen("arithmetic3.out","w",stdout); ios::sync_with_stdio(0); cin>>n>>Q>>L>>R; for (int i = 1; i <= n; i++) { cin>>a[i]; } for (int i = 1; i <= Q; i++) { cin>>op[i]>>x[i]>>s[i]>>t[i]; } sort(a+1,a+n+1); int ansL=solveL(); int ansR=solveR(); cout<<max(0,ansR-ansL+1)<<endl; return 0; }