Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
98599 CSYZ_LiWenX Old Driver Tree C++ 编译错误 0 0 MS 0 KB 1011 2023-08-16 12:06:03

Tests(0/0):


#include<bits/stdc++.h> #define int long long using namespace std; struct node { int l,r; mutable int v; bool operator <(node x)const{ return l<x.l; } }; set<node>s; auto split(int pos){ auto 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; } int ask(int l,int r,int x) { int ans=0; auto qr=split(r+1),ql=split(l),t=ql; for(;ql!=qr;ql++) if((*ql).v==x) ans+=(*ql).r-(*ql).l+1; ql=t; s.erase(ql,qr),s.insert((node){l,r,x}); return ans; } int n,m; signed main(){ // freopen("1.in","r",stdin); // freopen("_.out","w",stdout); ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>m; for(int i=1;i<=n;i++){ int x;cin>>x; s.insert((node){i,i,x}); } while(m--){ int l,r,c;cin>>l>>r>>c; cout<<ask(l,r,c)<<'\n'; } } /* 4 4 1 2 2 4 1 3 1 1 4 4 1 2 2 1 4 2 */


测评信息: