Cod sursa(job #252776)

Utilizator ioalexno1Alexandru Bunget ioalexno1 Data 4 februarie 2009 21:48:11
Problema Trapez Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.67 kb
program alex;
var f:text;
    x,y:array[1..1005]of longint;
    s,s1:array[1..1000005]of longint;
    a,b,i,n,k,z,w,d,c:longint;
    t,u,nr:int64;
    e:boolean;
begin
assign(f,'trapez.in');reset(f);
readln(f,n);
for i:=1 to n do
    readln(f,x[i],y[i]);
close(f);
nr:=0;
k:=0;
for a:=1 to n-1 do
    for b:=a+1 to n do
        begin
        k:=k+1;
        s[k]:=(y[b]-y[a]);
        s1[k]:=(x[b]-x[a]);
        end;
c:=k-1;
e:=false;
while e=false do
      begin
      e:=true;
      for i:=1 to c do
          begin
          t:=(s[i]*s1[i+1]-s1[i]*s[i+1]);
          u:=(s1[i]*s1[i+1]);
          if((t>0)and(u>0))or((t<0)and(u<0))then begin
                                                                e:=false;
                                                                z:=s[i];
                                                                s[i]:=s[i+1];
                                                                s[i+1]:=z;
                                                                z:=s1[i];
                                                                s1[i]:=s1[i+1];
                                                                s1[i+1]:=z;
                                                                w:=i;
                                                                end;
            end;
      c:=w;
      end;
i:=0;
nr:=0;
while i<k do
      begin
      d:=1;
      repeat
      i:=i+1;
      t:=s[i]*s1[i+1];
      u:=s1[i]*s[i+1];
      if t=u then d:=d+1;
      until(t<>u)or(i>=k-1);
      nr:=nr+(d*(d-1))div 2;
      i:=i+1;
      end;
assign(f,'trapez.out');rewrite(f);
writeln(f,nr);
close(f);
end.