Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
36164 | j136 | 【S】T1 | C++ | 运行出错 | 0 | 1 MS | 256 KB | 1459 | 2025-02-07 20:28:53 |
#include<bits/stdc++.h> #define rep(i,a,b) for(int i=(a);i<=(b);i++) #define per(i,a,b) for(int i=(a);i>=(b);i--) #define REP(i,n) for(int i=0;i<(n);i++) #define fi first #define se second #define pb push_back #define mp make_pair using namespace std; typedef pair<int,int> pii; typedef vector<int> vi; typedef long long ll; template<class T> void read(T &x){ int f=0; x=0; char ch=getchar(); for(;!isdigit(ch);ch=getchar()) f|=(ch=='-'); for(;isdigit(ch);ch=getchar()) x=x*10+ch-'0'; if(f) x=-x; } const int N=200005; ll a[N],x[N],s[N],t[N],L,R; int op[N],n,Q; ll Div(ll a,ll b){ if(a>=0) return a/b; return -((-a)/b); } ll calc(ll a){ rep(i,1,Q){ if(op[i]==1&&a>=x[i]){ a=t[i]*(a+s[i]); assert(a <= 5e18 / t[i] - s[i]); } if(op[i]==2&&a<=x[i]){ a=Div(a-s[i],t[i]); } } 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("arithmetic.in","r",stdin); freopen("arithmetic.out","w",stdout); read(n),read(Q); read(L),read(R); rep(i,1,n){ read(a[i]); } rep(i,1,Q){ read(op[i]),read(x[i]); read(s[i]),read(t[i]); } sort(a+1,a+n+1); int ansL=solveL(); int ansR=solveR(); cout<<max(0,ansR-ansL+1)<<endl; return 0; }