Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
98574 wangjiajian Old Driver Tree C++ 通过 100 233 MS 14316 KB 1211 2023-08-16 11:23:00

Tests(20/20):


#include<bits/stdc++.h> #define st set<node>::iterator using namespace std; typedef long long ll; const int maxx=2e5+20; struct node { int l,r; mutable ll v; node(int L, int R=-1, ll V=0):l(L), r(R), v(V) {} bool operator<(const node& o) const { return l < o.l; } }; set<node> s; int n, m; ll a[maxx],c; st split(int pos) { st it=s.lower_bound(node(pos)); if (it!=s.end() && it->l==pos) return it; it--; int L=it->l,R=it->r; ll V=it->v; s.erase(it); s.insert(node(L, pos-1, V)); return s.insert(node(pos, R, V)).first; } void val(int l,int r,ll val) { st itr=split(r+1),itl=split(l); s.erase(itl, itr); s.insert(node(l, r, val)); } inline ll query(int l,int r,ll x) { ll ans=0; st qr=split(r+1),ql=split(l); for(;ql!=qr;ql++) if((*ql).v==x) ans=ans+(*ql).r-(*ql).l+1; return ans; } int main() { scanf("%d%d", &n, &m); for(int i=1; i<=n; i++) { scanf("%lld", a+i); s.insert(node(i,i,a[i])); } for(int i=1,l,r; i<=m; i++) { scanf("%d%d%lld", &l, &r, &c); printf("%lld\n", query(l,r,c)); val(l,r,c); } return 0; }


测评信息: