Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
98533 fkccf Old Driver Tree C++ 运行超时 20 1000 MS 12792 KB 944 2023-08-16 09:06:11

Tests(9/12):


#include<cstdio> #include<vector> #include<set> struct Rg{int l,r;mutable int v;}; bool operator<(const Rg&x,const Rg&y){return x.l<y.l;} std::set<Rg>s; #define Z static inline Z std::set<Rg>::iterator split(int p){auto it=s.lower_bound({p,0,0}); if(it!=s.end()&&it->l==p)return it;it--;if(it->r<p)return s.end(); int l=it->l,r=it->r,v=it->v;s.erase(it),s.insert({l,p-1,v});return s.insert({p,r,v}).first;} Z void assign(int l,int r,int x){auto pr=split(r+1),pl=split(l);s.erase(pl,pr);s.insert({l,r,x});} Z int query(int l,int r,int x){int w=0;for(auto qr=split(r+1),ql=split(l); ql!=qr;ql++)if(ql->v==x)w+=ql->r-ql->l+1;return w;} int main(){int n,m;scanf("%d%d",&n,&m);std::vector<int>a(n+1);for(int i=1;i<=n;i++)scanf("%d",&a[i]); int bg=0;for(int i=1;i<=n+1;i++)if(a[i]!=a[i-1]){if(bg)s.insert({bg,i-1,a[i-1]});bg=i;} for(int l,r,c;m--&&scanf("%d%d%d",&l,&r,&c);){printf("%d\n",query(l,r,c));assign(l,r,c);}}


测评信息: