Thứ Tư, 6 tháng 7, 2016

NỐI ĐIỂM

Trên hai đường thẳng song song L1 và L2 người ta đánh dấu trên mỗi đường N điểm. Các điểm trên đường thẳng L1 được đánh số từ 1 đến N từ trái qua phải, còn các điểm trên L2 cũng được đánh số bằng p1, p2,…,pN từ trái qua phải với p1, p2,…,pN là một hoán vị của 1, 2,…,N. Hình vẽ dưới đây cho ví dụ từ 1 đến 9:
Ta gọi các số gán cho các điểm là số hiệu của chúng. Cho phép nối hai điểm trên hai đường thẳng có cùng số hiệu.
Yêu cầu: Tìm cách nối được nhiều cặp điểm nhất với điều kiện các đoạn nối không được cắt nhau.
Dữ liệu: vào từ tệp văn bản WIRES.INP
+ Dòng đầu chứa số nguyên dương N (N<=1000)
+ Dòng thứ hai chứa các số nguyên p1, p2,…,pN các nhau bởi một ký tự trắng
Kết quả: ghi vào tệp văn bản WIRES.OUT
+ Dòng đầu tiên chứa k là số lượng các đoạn nối tìm được
+ Dòng tiếp theo chứa k số hiệu của các đầu mút của các đoạn nối (nếu có nhiều cách thì chỉ cần đưa ra một cách bất kỳ)
Ví dụ:
WIRES.INP
WIRES.OUT
9
2 5 3 8 7 4 6 9 1
5
2 3 4 6 9