亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

wiki1285

系統 3715 0

2013-09-21 16:50

      //
      
        By BLADEVIL 


      
      
        var
      
      
        

    n                       :longint;

    i                       :longint;

    x, y                    :longint;

    t, tot                  :longint;

    key, s, left, right     :
      
      
        array
      
      [
      
        0
      
      ..
      
        100010
      
      ] 
      
        of
      
      
         longint;

    ft                      :longint;

    a, b                    :longint;

    ans                     :longint;




      
      
        procedure
      
       right_rotate(
      
        var
      
      
         t:longint);


      
      
        var
      
      
        

    k                       :longint;


      
      
        begin
      
      
        

    k:
      
      =
      
        left[t];

    left[t]:
      
      =
      
        right[k];

    right[k]:
      
      =
      
        t;

    s[k]:
      
      =
      
        s[t];

    s[t]:
      
      =s[left[t]]+s[right[t]]+
      
        1
      
      
        ;

    t:
      
      =
      
        k;


      
      
        end
      
      
        ;




      
      
        procedure
      
       left_rotate(
      
        var
      
      
         t:longint);


      
      
        var
      
      
        

    k                       :longint;


      
      
        begin
      
      
        

    k:
      
      =
      
        right[t];

    right[t]:
      
      =
      
        left[k];

    left[k]:
      
      =
      
        t;

    s[k]:
      
      =
      
        s[t];

    s[t]:
      
      =s[left[t]]+s[right[t]]+
      
        1
      
      
        ;

    t:
      
      =
      
        k;


      
      
        end
      
      
        ;




      
      
        procedure
      
       maintain(
      
        var
      
      
         t:longint;flag:boolean);


      
      
        begin
      
      
        if
      
      
        not
      
       flag 
      
        then
      
      
        if
      
       s[left[left[t]]]>s[right[t]] 
      
        then
      
      
        

            right_rotate(t) 
      
      
        else
      
      
        if
      
       s[right[left[t]]]>s[right[t]] 
      
        then
      
      
        begin
      
      
        

                left_rotate(left[t]);

                right_rotate(t);

            
      
      
        end
      
      
        else
      
      
         exit

    
      
      
        else
      
      
        if
      
       s[right[right[t]]]>s[left[t]] 
      
        then
      
      
        

            left_rotate(t) 
      
      
        else
      
      
        if
      
       s[left[right[t]]]>s[left[t]] 
      
        then
      
      
        begin
      
      
        

                right_rotate(right[t]);

                left_rotate(t);

            
      
      
        end
      
      
        else
      
      
         exit;

    maintain(left[t],false);

    maintain(right[t],true);

    maintain(t,true);

    maintain(t,false);


      
      
        end
      
      
        ;




      
      
        procedure
      
       insert(
      
        var
      
      
         t:longint; v:longint);


      
      
        begin
      
      
        if
      
       t=
      
        0
      
      
        then
      
      
        begin
      
      
        

        inc(tot);

        t:
      
      =
      
        tot;

        key[t]:
      
      =
      
        v;

        s[t]:
      
      =
      
        1
      
      
        ;

        left[t]:
      
      =
      
        0
      
      
        ;

        right[t]:
      
      =
      
        0
      
      
        ;

    
      
      
        end
      
      
        else
      
      
        begin
      
      
        

        inc(s[t]);

        
      
      
        if
      
       v<key[t] 
      
        then
      
       insert(left[t],v) 
      
        else
      
      
         insert(right[t],v);

        maintain(t,v
      
      >=
      
        key[t]);

    
      
      
        end
      
      
        ;


      
      
        end
      
      
        ;




      
      
        function
      
       delete(
      
        var
      
      
         t:longint; v:longint):longint;


      
      
        begin
      
      
        

    dec(s[t]);

    
      
      
        if
      
       (v=key[t]) 
      
        or
      
       (v<key[t]) 
      
        and
      
       (left[t]=
      
        0
      
      ) 
      
        or
      
       (v>key[t]) 
      
        and
      
       (right[t]=
      
        0
      
      ) 
      
        then
      
      
        begin
      
      
        

        delete:
      
      =
      
        key[t];

        
      
      
        if
      
       (left[t]=
      
        0
      
      ) 
      
        or
      
       (right[t]=
      
        0
      
      ) 
      
        then
      
      
        

            t:
      
      =left[t]+right[t] 
      
        else
      
      
        

            key[t]:
      
      =delete(left[t],key[t]+
      
        1
      
      
        );

    
      
      
        end
      
      
        else
      
      
        if
      
       v<key[t] 
      
        then
      
       delete:=delete(left[t],v) 
      
        else
      
       delete:=
      
        delete(right[t],v);


      
      
        end
      
      
        ;




      
      
        function
      
       pre(
      
        var
      
      
         t:longint; v:longint):longint;


      
      
        begin
      
      
        if
      
       t=
      
        0
      
      
        then
      
       exit(-
      
        1
      
      
        );

    
      
      
        if
      
       v<key[t] 
      
        then
      
       pre:=pre(left[t],v) 
      
        else
      
      
        begin
      
      
        

        pre:
      
      =
      
        pre(right[t],v);

        
      
      
        if
      
       pre=-
      
        1
      
      
        then
      
       pre:=
      
        key[t];

    
      
      
        end
      
      
        ;


      
      
        end
      
      
        ;




      
      
        function
      
       succ(
      
        var
      
      
         t:longint; v:longint):longint;


      
      
        begin
      
      
        if
      
       t=
      
        0
      
      
        then
      
       exit(-
      
        1
      
      
        );

    
      
      
        if
      
       key[t]<=v 
      
        then
      
       succ:=succ(right[t],v) 
      
        else
      
      
        begin
      
      
        

        succ:
      
      =
      
        succ(left[t],v);

        
      
      
        if
      
       succ=-
      
        1
      
      
        then
      
       succ:=
      
        key[t];

    
      
      
        end
      
      
        ;


      
      
        end
      
      
        ;






      
      
        begin
      
      
        

    read(n);

    ans:
      
      =
      
        0
      
      
        ;

    t:
      
      =
      
        0
      
      ; tot:=
      
        0
      
      ; s[t]:=
      
        0
      
      
        ;



    
      
      
        for
      
       i:=
      
        1
      
      
        to
      
       n 
      
        do
      
      
        begin
      
      
        

        read(x,y);

        
      
      
        if
      
       x=ft 
      
        then
      
       insert(t,y) 
      
        else
      
      
        if
      
       s[t]=
      
        0
      
      
        then
      
      
        begin
      
      
        

                ft:
      
      =
      
        x;

                insert(t,y);

            
      
      
        end
      
      
        else
      
      
        begin
      
      
        

                a:
      
      =pre(t,y); b:=
      
        succ(t,y);

                
      
      
        if
      
       a=-
      
        1
      
      
        then
      
       a:=-maxlongint 
      
        div
      
      
        10
      
      
        ;

                
      
      
        if
      
       b=-
      
        1
      
      
        then
      
       b:=maxlongint 
      
        div
      
      
        10
      
      
        ;

                
      
      
        if
      
       abs(b-y)<abs(y-a) 
      
        then
      
      
        begin
      
      
        

                    ans:
      
      =(ans+abs(b-y)) 
      
        mod
      
      
        1000000
      
      
        ;

                    b:
      
      =
      
        delete(t,b);

                
      
      
        end
      
      
        else
      
      
        begin
      
      
        

                    ans:
      
      =(ans+abs(y-a)) 
      
        mod
      
      
        1000000
      
      
        ;

                    a:
      
      =
      
        delete(t,a);

                
      
      
        end
      
      
        ;

            
      
      
        end
      
      
        ;

    
      
      
        end
      
      
        ;

    writeln(ans);




      
      
        end
      
      .
    

?

wiki1285


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 天天操天天爱天天干 | 毛片一级在线 | jizz丝袜 | 国产成人综合亚洲欧洲色就色 | 久久精品在这里 | 欧美xxx午夜免费视频 | 久久草在线观看视频 | 国产精品久久久久久久久免费 | 中文字幕亚洲国产 | 久草手机在线观看 | 老司机午夜在线 | 久久伊人精品综合观看99 | 黄色男人的天堂 | 亚洲一区二区精品推荐 | 亚洲国产激情 | 两性视频久久 | 欧美在线成人免费国产 | 亚洲综合色播 | 国产精品爱啪在线线免费观看 | 国产精品青草久久福利不卡 | 久久中文视频 | 欧洲一级做a爱在线观看 | 国产成人亚洲精品无广告 | 日韩一区二区国色天香 | 久青草国产高清在线视频 | 国产精品偷伦视频免费观看的 | 国内精品久久久久久久aa护士 | 综合热久久 | 精品无码久久久久久国产 | 久久成人国产精品二三区 | 91久久精品国产免费一区 | 欧美 日韩 高清 | 久久免费香蕉视频 | 国产乱在线 | 免费污视频在线观看 | 国产精品久久久久久影视 | 五月花精品视频在线观看 | 一级高清在线观看影片 | 久久久综合香蕉尹人综合网 | 性视频久久 | 国产成人综合在线视频 |