Cod sursa(job #329675)

Utilizator ionutz32Ilie Ionut ionutz32 Data 7 iulie 2009 07:59:59
Problema Numarare triunghiuri Scor 30
Compilator fpc Status done
Runda Arhiva de probleme Marime 1 kb
var v:array[1..800] of integer;
n,i,t,x,a,b,m,j,nr,c:word;
f,g:text;
k:boolean;
begin
assign(f,'nrtri.in');
assign(g,'nrtri.out');
reset(f);rewrite(g);
readln(f,n);
for i:=1 to n do
    read(f,v[i]);
t:=n;
repeat
      k:=true;
      for i:=1 to t-1 do
          if v[i]>v[i+1] then
             begin
             x:=v[i];
             v[i]:=v[i+1];
             v[i+1]:=x;
             k:=false;
             end;
      t:=t-1;
until k=true;
for i:=1 to n-1 do
    for j:=i+1 to n do
        begin
        a:=1;b:=n;
        while a<=b do
              begin
              m:=(a+b) div 2;
              if (v[m]<=v[i]+v[j]) then
                 if ((m+1>n) or (v[m+1]>v[i]+v[j])) then
                    begin
                    c:=m;
                    break;
                    end
                 else
                     a:=m+1
              else
                  b:=m-1;
              end;
        nr:=nr+c-j;
        end;
write(g,nr);
close(f);close(g);
end.