Cod sursa(job #8260)

Utilizator ProtomanAndrei Purice Protoman Data 23 ianuarie 2007 23:41:40
Problema Numarare triunghiuri Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.05 kb
var f1,f2:text; i,j,r,n,l,s,c,x,m:longint; a:array[1..800] of integer;

procedure pozitie(var m:longint; p,u:longint);
var i,j,di,dj,aux:longint;
begin
di:=0;
dj:=-1;
i:=p;
j:=u;
while i<j do
begin
if a[i]>a[j] then
begin
aux:=di;
di:=-dj;
dj:=-aux;
aux:=a[i];
a[i]:=a[j];
a[j]:=aux;
end;
i:=i+di;
j:=j+dj;
end;
m:=i;
end;

procedure quick(p,u:longint);
var m:longint;
begin
if p<u then
begin
pozitie(m,p,u);
quick(p,m-1);
quick(m+1,u);
end;
end;

begin
        assign(f1,'nrtri.in');
        reset(f1);
        assign(f2,'nrtri.out');
        rewrite(f2);
        read(f1,n);
        for i:=1 to n do
        read(f1,a[i]);
        quick(1,n);
        for i:=1 to n-1 do
        for j:=i+1 to n do begin
        s:=0;
        x:=a[i]+a[j];
        m:=(j+n) div 2;
        if a[m]<=x then
        while (a[m]<=x)and(m<n) do
        inc(m)
        else if a[m]>=x then
        while (a[m]>=x)and(m>j) do
        dec(m)
        c:=c+(m-j);
        end;
        write(f2,c);
        close(f1);
        close(f2);
end.