Cod sursa(job #1147248)

Utilizator Vasile_Catananoname Vasile_Catana Data 19 martie 2014 18:03:28
Problema Trapez Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.94 kb
program p1;
var a,b:array[0..1000] of longint;
    panta:array[0..1000000] of real;
    sol:array[0..1000000] of longint;
    f,g:text;
    b1,b2:array[0..1 shl 17 ] of char;
    i,n,j,k,u,aux:longint;
    aux1:real;
procedure Sort(l, r: longint);
var
  i, j: longint;
  x,y:real;
begin
  i := l; j := r; x := panta[(l+r) DIV 2];
  repeat
    while panta[i] < x do i := i + 1;
    while x < panta[j] do j := j - 1;
    if i <= j then
    begin
      y := panta[i]; panta[i] := panta[j]; panta[j] := y;
      i := i + 1; j := j - 1;
    end;
  until i > j;
  if l < j then Sort(l, j);
  if i < r then Sort(i, r);
end;
begin
assign(f,'trapez.in');reset(F);settextbuf(f,b1);
assign(g,'trapez.out');rewrite(G);settextbuf(g,b2);
readln(f,n);
for i:=1 to  n do begin
         readln(f,a[i],b[i]);
                if i>=2 then
                for j:=1 to i-1 do  begin
                         if (a[i]-a[j]) = 0 then begin
                                                inc(U);
                                                panta[u]:=23131231313;
                                                end
                                                else begin

                                        inc(U);
                                        panta[u]:=((b[i]-b[j])/(a[i]-a[j]));
                                                end;
                                end;
                end;
sort(1,u);
{for i:=1 to u-1 do
        for j:=i+1 to u do
                if panta[i]<panta[j] then begin
                                      aux1:=panta[i];
                                      panta[i]:=panta[j];
                                      panta[j]:=aux1;
                                         end; }

for i:=1 to u do
         if panta[i]=panta[i+1] then begin
                sol[i]:=sol[i-1]+1;
                        k:=k+sol[i];
                                end;
writeln(G,k);
close(F);
close(G);
end.