Pagini recente » Cod sursa (job #1366982) | Cod sursa (job #1768470) | Cod sursa (job #2226957) | Cod sursa (job #2045213) | Cod sursa (job #1206464)
uses crt;
type vector=array[1..800] of integer;
var v:vector;
f,g:text;
k,rez,j,x,nr,i,n:integer;
procedure sort; //sortez vectorul crescator cu ajutorul unei variabile auxiliare
var i,j,aux : integer;
begin
for i:=1 to n-1 do
for j:=i+1 to n do
if v[i] > v[j] then
begin
aux:=v[i];
v[i]:=v[j];
v[j]:=aux;
end;
end;
function caut(x:integer):integer; //caut numerele din vector cu proprietatea ca v(i-2) + v(i-1) <= v[i]
var pas,lim:longint;
begin
pas:=1<<9;
lim:=0;
while pas<>0 do
begin
if (lim+pas<=n) and (v[lim+pas]<=x) then
lim:=lim+pas;
pas:=pas>>1;
end;
caut:=lim;
end;
begin
assign(f,'nrtri.in');
reset(f);
assign(g,'nrtri.out');
rewrite(g);
read(f,n);
rez:=0;
for i:=1 to n do
read(f,v[i]);
sort;
for i:=1 to n-2 do
for j:=i+1 to n-1 do
begin
k:=caut(v[i]+v[j]);
if k>j then rez:=rez+k-j;
{ writeln('pentru v[',i,'] = ',v[i],' si v[',j,']= ',v[j],' avem k= ',k,' si rez= ',rez);}
end;
writeln(g,rez);
close(g);
close(f);
end.