Pagini recente » Cod sursa (job #230582) | Cod sursa (job #701757) | Cod sursa (job #1360791) | Cod sursa (job #3186815) | Cod sursa (job #148182)
Cod sursa(job #148182)
var a:array[1..33000] of integer;
aux,i,j,n,k,ls,ld,m:integer;
nr:int64;
f,g:text;
ok:boolean;
begin
assign(f,'nrtri.in');reset(f);
assign(g,'nrtri.out');rewrite(g);
readln(f,n);
nr:=0;
for i:=1 to n do read(f,a[i]);
repeat
ok:=true;
for i:=1 to n-1 do
if a[i]>a[i+1] then
begin
ok:=false;
aux:=a[i];
a[i]:=a[i+1];
a[i+1]:=aux;
end;
until ok=true;
for i:=1 to n-2 do
for j:=i+1 to n-1 do
begin
ok:=false;
ls:=j+1;
ld:=n-1;
while (ls<=ld) and not ok do
begin
m:=(ls+ld) div 2;
if (a[i]+a[j]>=a[m]) and (a[m]+a[j]>=a[i]) and (a[i]+a[m]>=a[j]) then
begin
nr:=nr+(n-m);
ok:=true;
end
else if (a[i]+a[j]<=a[m]) and (a[m]+a[j]>=a[i]) and (a[i]+a[m]>=a[j]) then ls:=m+1
else ld:=m-1;
end;
end;
write(g,nr);
close(f);
close(g);
end.