社区讨论

谁说pascal只能80,要换c++的

P1198[JSOI2008] 最大数参与者 6已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
5 条
当前快照
1 份
快照标识符
@mi4g6ogz
此快照首次捕获于
2025/11/18 18:45
4 个月前
此快照最后确认于
2025/11/18 18:45
4 个月前
查看原帖
CPP
var    
    a,b:array[0..200000] of longint;    
    m,d,i,p,t,s,f,le,ri,u:longint;    
    k:char;    
    w:dword;    
begin    
    readln(m,d);    
    s:=0;
    f:=0;
    a[0]:=maxlongint;    
    for i:=1 to m do begin    
        read(k);    
        readln(p);    
        if k='A' then begin    
            inc(s);   
            inc(f);    
            w:=t;    
            w:=w+p;    
            if w<=maxlongint then a[s]:=w mod d 
                else a[s]:=(-((not w)+1)) mod d;    
            b[s]:=f;    
            while a[s]>=a[s-1] do begin 
                dec(s);
                a[s]:=a[s+1];
                b[s]:=b[s+1];
            end;    
        end 
        else begin    
            le:=0;
            ri:=s;    
            repeat    
                u:=(le+ri) shr 1;    
                if b[u]<f-p+1 then le:=u 
                    else ri:=u;    
            until ri-le=1;    
            t:=a[ri];    
            writeln(t);    
        end;    
    end;    
end.

回复

5 条回复,欢迎继续交流。

正在加载回复...