Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

第一次做计算几何,三点一线也判断了,用叉积做的,怎么就不过呢????

Posted by leo940720 at 2012-04-03 00:09:37 on Problem 1696
program poj1696;
type
	data=record
		x,y,num:longint;
	end;

var
	zk:array[0..50]of integer;
	ck:array[1..50]of boolean;
	a:array[0..50]of data;
	i,j,k,l,m,sum,n:longint;
	bg,tmp:data;

function check(p1,p2,p3:data):boolean;
var
	x1,x2,y1,y2,d:longint;
begin
	x1:=(p3.x-p1.x);
	x2:=(p2.x-p1.x);
	y1:=(p3.y-p1.y);
	y2:=(p2.y-p1.y);
	d:=x1*y2-y1*x2;
	if d<0 then exit(true)
	else if d>0 then exit(false)
	else begin
		if abs(x1)<abs(x2) then exit(false)
			else exit(true);
	end;
end;

procedure qsort(l,r:longint;p:data);
var
	i,j,min:longint;
	mid,tmp:data;
begin
        for i:=l to r-1 do
        begin
                min:=i;
                for j:=i+1 to r do
                if check(p,a[j],a[min]) then min:=j;
                if min<>i then begin
                        tmp:=a[i];
                        a[i]:=a[min];
                        a[min]:=tmp;
                end;
        end;
end;

function min(a,b:longint):longint;
begin
        if a<b then exit(a) else exit(b);
end;

begin
        assign(input,'test.in'); reset(input);
	readln(k);
	a[0].x:=1;
	a[0].y:=0;
	for l:=1 to k do begin
                bg.y:=maxlongint;
		sum:=0;
		readln(n);
		for i:=1 to n do begin
                        readln(a[i].num,a[i].x,a[i].y);
                        bg.y:=min(bg.y,a[i].y);
                end;
		bg.x:=0;
		while sum<n do
		begin
			qsort(1,n-sum,bg);
			i:=1;
			inc(sum);
			zk[sum]:=a[i].num;
			ck[a[i].num]:=true;
			bg:=a[i];
                        a[i]:=a[n-sum+1];
		end;
		write(n);
		for i:=1 to n do write(' ',zk[i]);
		writeln;
	end;
end.

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator