CVJETICI - Cvjetici

Tác giả: khuc_tuan

Ngôn ngữ: Pascal

//{$A8,B-,C+,D+,E-,F-,G+,H+,I+,J-,K-,L+,M-,N+,O+,P+,Q+,R+,S+,T-,U-,V+,W-,X+,Y+,Z1}
// {$APPTYPE CONSOLE}
 {$mode delphi}

var
    i, t, p, x, y, n : integer;
    b : array[1..110000] of integer;

procedure update(i, v : integer);
begin
    while i <= 110000 do
    begin
        inc(b[i], v);
        inc(i, i and (-i));
    end;
end;

function get(i : integer) : integer;
var
    r : integer;
begin
    r := 0;
    while i > 0 do
    begin
        inc(r, b[i]);
        dec(i, i and (-i));
    end;
    get := r;
end;

begin
    read(n);
    for i:=1 to n do
    begin
        read(x,y);
        t := get(x);
        p := get(y);
        writeln(t + p);
        update(x,-t);
        update(x+1,t);
        update(y,-p);
        update(y+1,p);
        if x + 1 < y then
        begin
            update(x+1,1);
            update(y,-1);
        end;
    end;
end.

Download