Cod sursa(job #591501)

Utilizator ion_calimanUAIC Ion Caliman ion_caliman Data 24 mai 2011 15:45:18
Problema Numarare triunghiuri Scor 80
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.99 kb
var     a:array[1..800] of integer;
        n,i,j,k:longint;
        buf:array[1..100000] of integer;
        nr:int64;
        f1,f2:text;

procedure sw(var a,b:integer);
var t:integer;
begin
  t:=a;
  a:=b;
  b:=t;
end;

procedure qs(left,right:integer);
var     i,j,r:integer;
begin
  i:=left;
  j:=right;
  r:=a[(i+j) div 2];
  while i<j do
    begin
      while a[i]<r do inc(i);
      while a[j]>r do dec(j);
      if i<=j then begin sw(a[i],a[j]); inc(i); dec(j); end;
    end;
  if i<right then qs(i,right);
  if j>left then qs(left,j);
end;

begin
  assign(f1,'nrtri.in');
  assign(f2,'nrtri.out');
  reset(f1);
  rewrite(f2);
  settextbuf(f1,buf);
  readln(f1,n);

  for i:=1 to n do
    read(f1,a[i]);

  qs(1,n);

  nr:=0;
  for i:=1 to n-2 do
  for j:=i+1  to n-1 do
  for k:=j+1 to n do
    //if (a[i]+a[j]>=a[k])or(a[i]+a[k]>=a[j])or(a[j]+a[k]>=a[i]) then inc(nr);
    if a[i]+a[j]>=a[k] then inc(nr) else break;

  write(f2,nr);
  close(f2);
end.