AcWing 1275. 最大数

 

 

#include<bits/stdc++.h>
#define N 1000100
using namespace std;
struct node 
{
    int l,r;
    int data;
}e[4*N];
int n,m,cut;
void build(int xh,int l,int r)
{
    e[xh].l=l,e[xh].r=r;
    if(l==r)return;
    int mid=(l+r)>>1;
    build(xh<<1,l,mid),build(xh<<1|1,mid+1,r);
}
void add(int xh,int zb,int data)
{
    int l=e[xh].l,r=e[xh].r;
    if(l==r)e[xh].data=data;
    int mid=(l+r)>>1;
    if(mid<zb)add(xh*2+1,zb,data);
    else add(xh*2,zb,data);
}
int ask(int xh,int l,int r)
{
    int ll=e[xh].l,rr=e[xh].r;
    if(ll>=l&&rr<=r)return e[xh].data;
    return max(ask(xh<<1,l,r),ask(xh<<1|1,l,r));
}
int main()
{
    cin>>n>>m;
    build(1,1,n);
    for(int i=1;i<=n;i++)
    {
        char s;
        int x;
        cin>>s>>x;
        if(s=='A')add(1,++cut,x%m);
        else printf("%d\n",ask(1,cut-x+1,cut));
    }
    return 0;
}

 

posted @ 2021-02-02 10:45  君与  阅读(58)  评论(0编辑  收藏  举报