BOI 2005 - Polygon

Xem PDF



Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2100 (p) Thời gian: 5.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Hãy dựng một đa giác lồi có các độ dài cạnh cho trước. Trong bài này, một đa giác được coi là lồi khi mọi góc trong đều lớn hơn nghiêm ngặt \(0^\circ\) và nhỏ hơn nghiêm ngặt \(180^\circ\).

Dữ liệu vào

Dòng đầu chứa số nguyên \(N\) (\(3 \le N \le 1000\)), số đỉnh của đa giác. Mỗi dòng trong \(N\) dòng tiếp theo chứa một số nguyên \(a_i\) (\(1 \le a_i \le 10\,000\)), là độ dài một cạnh.

Dữ liệu ra

Nếu dựng được đa giác, in đúng \(N\) dòng. Dòng thứ \(i\) chứa hai số thực \(x_i,y_i\) (\(|x_i|,|y_i| \le 10\,000\,000\)). Nối \((x_i,y_i)\) với \((x_{i+1},y_{i+1})\) cho \(1 \le i<N\), rồi nối \((x_N,y_N)\) với \((x_1,y_1)\), phải thu được một đa giác lồi. Độ dài các cạnh phải bằng các số trong dữ liệu vào, nhưng không nhất thiết theo cùng thứ tự. Có thể liệt kê các đỉnh theo chiều kim đồng hồ hoặc ngược chiều kim đồng hồ.

Nếu không dựng được, in một dòng NO SOLUTION.

Hai độ dài được coi là bằng nhau nếu chênh lệch nhỏ hơn \(0.001\). Có thể dùng mọi định dạng số thực tiêu chuẩn.

Ví dụ

Ví dụ 1

Input
4
7
4
5
4
Output
0.5 2.5
7.5 2.5
4.5 6.5
0.5 6.5

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: