Pagini recente » Cod sursa (job #2673476) | Cod sursa (job #188754) | Cod sursa (job #954045) | Cod sursa (job #720657) | Cod sursa (job #1135918)
Program triunghiuri;
var H : array [1..900] of longint;
n,i,l,j,m : longint;
procedure swap(var x,y:longint);
var aux:longint;
begin
aux:=x;
x:=y;
y:=aux;
end;
procedure coboara( n, k : longint);
var fiu : longint;
begin
repeat
fiu:=0;
if k*2<n then begin
fiu:=k*2;
if H[k*2+1]>H[k*2] then fiu:=k*2+1;
if H[fiu]<=H[k] then fiu:=0
end
else
if k*2=n then begin
fiu:=k*2;
if H[fiu]<=H[k] then fiu:=0;
end;
if fiu<>0 then begin
swap(H[k],H[fiu]);
k:=fiu;
end;
until fiu=0;
end;
procedure heapsort(n : longint);
var i :longint; begin
for i:=n downto 2 do begin
swap(H[1],H[i]);
coboara(i-1,1);
end;
end;
begin
assign(input,'HEAPURI.in');reset(input);
assign(output,'heapuri.out');rewrite(output);
readln(n); l:=0;
for i:=1 to n do read(H[i]);
for i:=n div 2 downto 1 do coboara(n,i);
heapsort(n);
for i:=1 to n-2 do
for j:=i+1 to n-1 do begin
m:=j+1;
while (H[m]<=(H[i]+H[j])) and (m<=n) do
begin
l:=l+1;
m:=m+1;
end;
end;
writeln(l);
close(input);
close(output);
end.