Trạng thái

Đề bài

PARTITION – Chia điểm

HoL là một học sinh xuất sắc tại trường CTUT và luôn muốn mọi thứ xung quanh thật hoàn hảo. Trong một buổi học Hình học, cậu nhận ra rằng có thể gọi 8 điểm trên mặt phẳng là 8 điểm hoàn hảo nếu thỏa mãn điều kiện sau:

  • Có thể chia 8 điểm thành 2 nhóm, mỗi nhóm gồm 4 điểm sao cho:
    • Nhóm thứ nhất tạo thành 4 đỉnh của một hình vuông.
    • Nhóm còn lại tạo thành 4 đỉnh của một hình chữ nhật.
  • Cả hình vuông và hình chữ nhật đều phải có diện tích khác 0.
  • Các cạnh của các hình không cần phải song song với trục tọa độ.

Yêu cầu: Xác định xem 8 điểm đã cho có tạo thành 8 điểm hoàn hảo không.

Dữ liệu vào

Gồm 8 dòng, mỗi dòng chứa 2 số nguyên là tọa độ \(x, y\) của một điểm.

  • Các điểm được đánh số từ 1 đến 8 theo thứ tự xuất hiện.
  • Không có hai điểm nào trùng nhau.
  • Giá trị tuyệt đối của tọa độ không vượt quá \(10^4\).

Dữ liệu ra

  • Nếu 8 điểm tạo thành 8 điểm hoàn hảo:
    • Dòng 1: "YES"
    • Dòng 2: 4 số nguyên là chỉ số của các điểm tạo thành hình vuông (theo thứ tự bất kỳ).
    • Dòng 3: 4 số nguyên là chỉ số của các điểm tạo thành hình chữ nhật (theo thứ tự bất kỳ).
  • Nếu không tạo thành 8 điểm hoàn hảo:
    • In ra một dòng duy nhất: "NO"

Giới hạn

  • Mỗi điểm có tọa độ trong khoảng \([-10^4, 10^4]\).
  • Không có 2 điểm nào trùng nhau.

Sample Input 1

0  0
10 11
10 0
0 11
1 1
2 2
2 1
1 2

Sample Output 1

YES
5 6 7 8
1 2 3 4

Sample Input 2

0 0
1 2
2 2
3 3
4 4
5 5
6 6
7 7

Sample Output 2

NO

Sample Input 3

0 0
4 4
4 0
0 4
1 2
2 3
3 2
2 1

Sample Output 3

YES
3 2 1 4
6 5 7 8

Sample Input 4

-160 336
-76 672
8 168
-580 588
-1000 504
-496 840
-496 84
-664 0

Sample Output 4

YES
1 6 5 8
2 4 7 3

Giải thích

  • Các hình vuông và hình chữ nhật có thể xoay hoặc nghiêng, không cần phải song song với trục tọa độ.
Thông tin
Thông tin bài tập
Gửi bài giải
Điểm
100
Giới hạn thời gian:
2.0s
Giới hạn bộ nhớ:
250 M
I/O
stdin -> stdout
Loại đề bài
Toán: Hình học
Ngôn ngữ cho phép
C, C#, C++, Java, Pascal, Python, Text