Pagini recente » Cod sursa (job #2908954) | Cod sursa (job #1351096) | Cod sursa (job #2645088) | Cod sursa (job #2929510) | Cod sursa (job #604332)
Cod sursa(job #604332)
Program nr_triunghiuri;
var n,i,j,p,s,t,x:integer;
a:array [1..800] of integer;
b1,b2: array [1..1 shl 17] of char;
nr:longint;
fi,fo:text;
procedure qsort(l,r:integer);
var k,i,j,y:integer;
begin
i:=l; j:=r;
k:=a[(l+r) div 2];
repeat
while a[i]<k do inc(i);
while a[j]>k do dec(j);
if i<=j then
begin
y:=a[i];
a[i]:=a[j];
a[j]:=y;
inc(i); dec(j);
end;
until i>=j;
if l<j then qsort(l,j);
if i<r then qsort(i,r);
end;
begin
assign(fi,'nrtri.in');
assign(fo,'nrtri.out');
settextbuf(fi,b1);
settextbuf(fo,b2);
reset(fi);
rewrite(fo);
readln(fi,n);
for i:=1 to n do read(fi,a[i]);
qsort(1,n);
for i:=1 to n-2 do
for j:=i+1 to n-1 do begin
x:=a[i]+a[j];
if x>=a[n] then nr:=nr+n-j
else begin
s:=j+1;
t:=n;
while s<t do begin
p:=(s+t) div 2;
if a[p]<=x then s:=p+1
else t:=p;
end;
nr:=nr+t-j-1;
end;
end;
write(fo,nr);
close(fo);
end.