Pagini recente » Cod sursa (job #2290073) | Cod sursa (job #1557925) | Cod sursa (job #2999472) | Cod sursa (job #2815482) | Cod sursa (job #562492)
Cod sursa(job #562492)
const nmax=15000;
mmax=100000;
var a,b,n:integer;
sir:string;
i,m:longint;
s:array[1..1 shl 15]of longint;
op:byte;
procedure updatare(l,r,pos:integer);
var m:integer;
begin
if l<>r then
begin
m:=(l+r)shr 1;
if a<=m then updatare(l,m,pos shl 1)
else updatare(m+1,r,pos shl 1+1);
end;
dec(s[pos],b);
end;
function interogare(l,r,pos:integer):longint;
var m:integer;
tt:longint;
begin
tt:=0;
if (a<=l)and(r<=b) then tt:=s[pos]
else
begin
m:=(l+r)shr 1;
if a<=m then inc(tt,interogare(l,m,pos shl 1));
if b>m then inc(tt,interogare(m+1,r,pos shl 1+1));
end;
interogare:=tt;
end;
begin
assign(output,'datorii.out');rewrite(output);
assign(input,'datorii.in');reset(input);
readln(n,m);
a:=0;
while not seekeoln(input) do
begin
read(sir);
sir:=sir;
for i:=1 to length(sir) do
if sir[i]=' ' then
begin
inc(a);
b:=-b;
updatare(1,n,1);
b:=0;
end
else b:=b*10+ord(sir[i])-48;
end;
inc(a);
b:=-b;
updatare(1,n,1);
for i:=1 to m do
begin
readln(op,a,b);
if op=1 then writeln(interogare(1,n,1))
else updatare(1,n,1);
end;
close(input);
close(output);
end.