P141SUMA spoj PTIT – Đi đường nào
Nguồn đề bài: http://vn.spoj.com/PTIT/problems/P141SUMA/ 1. Đề bài P141SUMA spoj Đất nước X đang gặp nguy hiểm, có một con quỷ từ đâu tới phá rối người dân nơi đây. Vốn là một đất nước có tinh thần yêu nước, không phải chờ đợi lâu, một dũng sĩ đã ngay lập tức xách gươm lên và đi ...
Nguồn đề bài: http://vn.spoj.com/PTIT/problems/P141SUMA/
1. Đề bài P141SUMA spoj
Đất nước X đang gặp nguy hiểm, có một con quỷ từ đâu tới phá rối người dân nơi đây. Vốn là một đất nước có tinh thần yêu nước, không phải chờ đợi lâu, một dũng sĩ đã ngay lập tức xách gươm lên và đi đánh quỷ. Dũng sĩ cần đi từ điểm A thẳng tới điểm B rồi tới điểm C (Nơi con quỷ đang phá rối). Nhưng không may, khi đến điểm B, dũng sĩ quên mất đi tới C bằng con đường nào bởi ở B có 3 sự lựa chọn một là rẽ vuông góc sang trái hoặc rẽ vuông góc sang phải hoặc đi thằng để tới C. Đúng lúc đó có một con đại bàng bay ngang qua và thấy rõ được con quỷ ở hướng nào.
Giả sử nếu bạn là con đại bàng và được cho biết trước tọa độ 3 điểm A, B, C, hãy nói cho dũng sĩ nên rẽ trái, phải, hay đi thẳng nhé.
Input
Dòng 1, 2, 3 lần lượt chứa tọa độ 3 điểm A, B, C.
Mỗi dòng gồm 2 số nguyên là tọa độ tương ứng. ( |x|, |y| <= 10 ^9 )
Dòng 1, 2, 3 lần lượt chứa tọa độ 3 điểm A, B, C.
Mỗi dòng gồm 2 số nguyên là tọa độ tương ứng. ( |x|, |y| <= 10 ^9 )
Output
Gồm một dòng duy nhất.
In ra “RIGHT” nếu dũng sĩ nên rẽ phải, “LEFT” nếu rẽ trái và “TOWARDS” nếu đi thằng.
Example
Test 1:
Input:
0 0
0 1
1 1
Output:
RIGHT
Test 2:
Input:
-1 -1
-3 -3
-4 -4
Output:
TOWARDS
Test 3:
Input:
-4 -6
-3 -7
-2 -6
Output:
LEFT
2. Gợi ý P141SUMA spoj
Đây là bài tập ứng dụng hàm CCW trong hình học rất cơ bản. các bạn có thể tìm hiểu về hàm CCW và làm bài này
3. Code P141SUMA spoj ứng dụng ccw cơ bản
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | const fi='; type data=longint; var f:text; x1,y1,x2,x3,y2,y3:int64; ccw:int64; begin assign(f,fi); reset(f); readln(f,x1,y1); readln(f,x2,y2); readln(f,x3,y3); close(f); ccw:=(x2-x1)*(y3-y1)-(y2-y1)*(x3-x1); if ccw>0 then write('LEFT') else if ccw<0 then write('RIGHT') ELSE write('TOWARDS'); end. |