Pagini recente » Cod sursa (job #2945161) | Istoria paginii runda/pregatire_oji_11-12 | Cod sursa (job #2047271) | Cod sursa (job #2269675) | Cod sursa (job #628980)
Cod sursa(job #628980)
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
s:=j;
t:=n;
while s<t do begin
p:=(s+t) div 2;
if a[i]+a[j]>=a[p] then s:=p+1
else t:=p;
end;
while (a[i]+a[j]>=a[s]) and (s<n) do inc(s);
while a[i]+a[j]<a[s] do dec(s);
nr:=nr+s-j;
end;
write(fo,nr);
close(fo);
end.