Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
98640 CSYZHunagKR Old Driver Tree C++ 运行超时 20 1000 MS 1060 KB 1323 2023-08-16 12:10:40

Tests(4/7):


#include<bits/stdc++.h> using namespace std; #define ll long long const int N=2e5+10; struct node{ ll l,r,v; bool operator<(const node &x)const{ return l<x.l; } bool operator>(const node &x)const{ return l>x.l; } }; set<node>s; #define st set<node>::iterator inline st split(ll pos){ st it=lower_bound(s.begin(),s.end(),node{pos,0,0}); if(it!=s.end()&&it->l==pos)return it; it--; if(it->r<pos) return s.end(); ll l=it->l,r=it->r,v=it->v; s.erase(it),s.insert((node){l,pos-1,v}); return s.insert((node){pos,r,v}).first; } inline void assign(ll l,ll r,ll x) { st pr=split(r+1),pl=split(l); s.erase(pl,pr),s.insert((node){l,r,x}); } inline ll query(ll l,ll r,ll x) { ll ans=0; st qr=split(r+1),ql=split(l); for(;ql!=qr;ql++) if((*ql).v==x) ans+=(*ql).r-(*ql).l+1; return ans; } inline void read(ll &x){ x=0;bool f=0;char c=getchar(); while(c>'9'||c<'0'){if(c=='-')f=1;c=getchar();} while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar(); if(f)x=-x; } ll n,m; int main(){ // freopen("ODT.in","r",stdin); // freopen("ODT.out","w",stdout); read(n);read(m); s.insert((node{1,n,0})); for(ll i=1;i<=n;i++){ ll x;read(x); assign(i,i,x); } while(m--){ ll l,r,x; read(l);read(r);read(x); cout<<query(l,r,x)<<endl; assign(l,r,x); } return 0; }


测评信息: