Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
37041 22fhq 【S】T3 C++ 通过 100 1230 MS 84552 KB 2817 2025-03-02 14:11:47

Tests(50/50):


#include<bits/stdc++.h> #define int long long using namespace std; const int mod=1ll<<61; void read(int &x){ x=0; char c=getchar(); while(!isdigit(c))c=getchar(); while(isdigit(c))x=(x<<1)+(x<<3)+(c^48),c=getchar(); } int n,q,k; __int128_t t[1200005],lzm[1200005],lza[1200005]; #define ls (p<<1) #define rs (p<<1|1) #define mid (l+r>>1) void pd(int p){ if(lzm[p]!=1){ lzm[ls]*=lzm[p],lzm[rs]*=lzm[p]; t[ls]*=lzm[p],t[rs]*=lzm[p]; lza[ls]*=lzm[p],lza[rs]*=lzm[p]; lzm[ls]%=mod,lzm[rs]%=mod; t[ls]%=mod,t[rs]%=mod; lza[ls]%=mod,lza[rs]%=mod; lzm[p]=1; } if(lza[p]){ lza[ls]+=lza[p],lza[rs]+=lza[p]; t[ls]+=lza[p],t[rs]+=lza[p]; lza[ls]%=mod,lza[rs]%=mod; t[ls]%=mod,t[rs]%=mod; lza[p]=0; } } void add(int l,int r,int ml,int mr,int x,int p){ // cout<<l<<" "<<r<<" "<<p<<endl; // cout<<x<<endl; if(ml<=l&&r<=mr){ t[p]+=x,lza[p]+=x; t[p]%=mod,lza[p]%=mod; return; } pd(p); if(mid>=ml)add(l,mid,ml,mr,x,ls); if(mid<mr)add(mid+1,r,ml,mr,x,rs); return; } void mul(int l,int r,int ml,int mr,int x,int p){ if(ml<=l&&r<=mr){ t[p]*=x,lza[p]*=x,lzm[p]*=x; t[p]%=mod,lza[p]%=mod,lzm[p]%=mod; return; } pd(p); if(mid>=ml)mul(l,mid,ml,mr,x,ls); if(mid<mr)mul(mid+1,r,ml,mr,x,rs); return; } int flr(int x){ if(x<0)return (x-1)/2; return x/2; } void dvd(int l,int r,int ml,int mr,int p){ if(l==r){ t[p]=flr(t[p]); return; } pd(p); if(mid>=ml)dvd(l,mid,ml,mr,ls); if(mid<mr)dvd(mid+1,r,ml,mr,rs); return; } int qu(int l,int r,int id,int p){ if(l==r)return t[p]; pd(p); if(mid>=id)return qu(l,mid,id,ls); return qu(mid+1,r,id,rs); } void prt(int l,int r,int p){ int a=t[p],b=lza[p],c=lzm[p]; cout<<l<<" "<<r<<" "<<a<<" "<<b<<" "<<c<<endl; if(l==r)return; pd(p); prt(l,mid,ls); prt(mid+1,r,rs); } void slv(){ read(n),read(q),read(k); for(int i=1;i<=4*n;i++)lzm[i]=1; while(q--){ char op;int l,r,w; cin>>op; read(l),read(r); switch(op){ case '+':read(w),add(1,n,l,r,w,1);break; case '-':read(w),add(1,n,l,r,-w,1);break; case '*':read(w),mul(1,n,l,r,w,1);break; case '/':dvd(1,n,l,r,1);break; } // prt(1,n,1); // for(int i=1;i<=n;i++){ // cout<<qu(1,n,i,1)<<" "; // } // cout<<endl; // prt(1,n,1); // cout<<endl; } for(int i=1;i<=n;i++){ cout<<(qu(1,n,i,1)%2+2)%2<<" "; } } signed main(){ int id; read(id); slv(); return 0; }


测评信息: