import java.io.*;

public class Main{

    static Node tr[];

    public static void main(String[]args) throws Exception{

        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

        BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));

        String s[]=br.readLine().split(" ");

        int m=Integer.parseInt(s[0]),p=Integer.parseInt(s[1]);

        tr=new Node[m*4];

        int last=0,x=0,n=1;

        build_tree(1,1,m);

        while(m--!=0){

            s=br.readLine().split(" ");

            x = Integer.valueOf(s[1]);

            if("Q".equals(s[0])){

                last = query(1, n - x + 1, n);

                bw.write(last + "\n");

            }else{

                modify(1, n + 1, (last + x) % p);  //注意,这里根节点是1, 修改的数是从n + 1开始。

                n++;

            }

             bw.flush();

        }

    }

    static void build_tree(int u,int l,int r){

        tr[u]=new Node(l,r);

        if(l==r) return;

        int mid=l+r>>1;

        build_tree(u<<1,l,mid);

        build_tree(u<<1|1,mid+1,r);

    }

    static void modify(int u,int x,int c){

        if(tr[u].l==x&&tr[u].r==x){

            tr[u].v=c;

        }else{

            int mid=tr[u].l+tr[u].r>>1;

            if(x<=mid) modify(u<<1,x,c);

            else modify(u<<1|1,x,c);

            pushUp(u);

        }

    }

    static void pushUp(int u){

        tr[u].v=Math.max(tr[u<<1].v,tr[u<<1|1].v);

    }

    static int query(int u,int l,int r){

        if(tr[u].l>=l&&tr[u].r<=r) return tr[u].v;

        int mid=tr[u].l+tr[u].r>>1;

        int v=0;

        if(l<=mid) v=query(u<<1,l,r);

        if(r>mid) v=Math.max(v,query(u<<1|1,l,r));

        return v;

    }

}

class Node{

    int l,r,v;

    Node(int l,int r){

        this.l=l;

        this.r=r;

    }

}


点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论