记录编号 |
582066 |
评测结果 |
AAAAAAAAAA |
题目名称 |
Color the Axis |
最终得分 |
100 |
用户昵称 |
小金 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
4.133 s |
提交时间 |
2023-09-01 21:56:19 |
内存使用 |
14.35 MiB |
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
const int maxn=200010;
string st;
int n,m;
struct ST{
int l,r;
int sum=0,add;
}t[maxn*4];
void build(int p,int l,int r)
{
t[p].l=l;
t[p].r=r;
if(l==r)
{
return;
}
int mid=(l+r)/2;
build(p*2,l,mid);
build(p*2+1,mid+1,r);
}
void spread(int p)
{
if(t[p].add)
{
t[p*2].sum=t[p].add*(t[p*2].r-t[p*2].l+1);
t[p*2+1].sum=t[p].add*(t[p*2+1].r-t[p*2+1].l+1);
t[p*2].add=t[p].add;
t[p*2+1].add=t[p].add;
t[p].add=0;
}
}
void change(int p,int l,int r,long long d)
{
if(l<=t[p].l&&r>=t[p].r)
{
t[p].sum=d*(t[p].r-t[p].l+1);
t[p].add=d;
return;
}
spread(p);
int mid=(t[p].l+t[p].r)/2;
if(l<=mid)
{
change(p*2,l,r,d);
}
if(r>mid)
{
change(p*2+1,l,r,d);
}
t[p].sum=t[p*2].sum+t[p*2+1].sum;
}
long long ask(int p,int l,int r)
{
if(l<=t[p].l&&r>=t[p].r)
{
return t[p].sum;
}
spread(p);
long long val=0;
int mid=(t[p].l+t[p].r)/2;
if(l<=mid)
{
val+=ask(p*2,l,r);
}
if(r>mid)
{
val+=ask(p*2+1,l,r);
}
return val;
}
int main()
{
freopen("axis.in","r",stdin);
freopen("axis.out","w",stdout);
cin>>n>>m;
build(1,1,n);
for(int i=1;i<=m;i++)
{
int q,z;
cin>>q>>z;
change(1,q,z,1);
cout<<n-t[1].sum<<endl;
}
return 0;
}