Pagini recente » Cod sursa (job #1752794) | Cod sursa (job #1131054) | Cod sursa (job #2228264) | Cod sursa (job #196632) | Cod sursa (job #113410)
Cod sursa(job #113410)
type vect = array[1..802] of longint;
var fi,fo:text;
i,j,n,t,step:longint;
a:vect;
ct:int64;
function part(st,dr:longint):longint;
var i,j,aux:longint;
sens:integer;
begin
i:=st; j:=dr; sens:=-1;
while i<j do
begin
if a[i]>a[j] then
begin
aux:=a[i];
a[i]:=a[j];
a[j]:=aux;
sens:=-sens;
end;
if sens=1 then inc(i)
else dec(j);
end;
part:=i;
end;
procedure qsort(st,dr:longint);
var p:longint;
begin
if st<dr then
begin
p:=part(st,dr);
qsort(st,p-1);
qsort(p+1,dr);
end;
end;
function binar(i,j:longint):longint;
var z:longint;
begin
z:=a[i]+a[j];
t:=j;
step:=1;
while step<=n do
begin
step:=step shl 1;
end;
while (step<>0) do
begin
if (t+step<=n) and (a[t+step]<=z) then t:=t+step;
step:=step shr 1;
end;
binar:=t-j;
end;
begin
ct:=0;
assign(fi,'nrtri.in'); reset(fi);
assign(fo,'nrtri.out'); rewrite(fo);
readln(fi,n);
for i:=1 to n do
begin
read(fi,a[i]);
end;
qsort(1,n);
ct := 0;
for i:=1 to n-1 do
for j:=i+1 to n do
ct:=ct+binar(i,j);
writeln(fo,ct);
close(fi);
close(fo);
end.