Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
98776 CSYZTanXi Old Driver Tree C++ 通过 100 206 MS 12776 KB 1070 2023-08-16 14:10:52

Tests(20/20):


#include<bits/stdc++.h> #define int long long #define st set<node>::iterator using namespace std; int n,m,a; struct node { int l,r; mutable int v; friend bool operator<(node i,node j) { return i.l<j.l; } }; set<node>s; inline st split(int pos) { st it=s.lower_bound((node){pos,0,0}); if(it!=s.end() && it->l==pos) return it; it--; if(it->r<pos) return s.end(); int 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(int l,int r,int x) { st pr=split(r+1),pl=split(l); s.erase(pl,pr),s.insert((node){l,r,x}); } inline int query(int l,int r,int x) { int 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; } signed main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>m; for(int i=1;i<=n;i++) { cin>>a; s.insert((node){i,i,a}); } for(int i=1;i<=m;i++) { int l,r,c; cin>>l>>r>>c; cout<<query(l,r,c)<<'\n'; assign(l,r,c); } return 0; }


测评信息: