Phân số tăng-FRACTION

Xem dạng PDF

Gửi bài giải

Điểm: 10,00
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: FRACTION.INP
Output: FRACTION.OUT

Tác giả:
Dạng bài

Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài

Xét bài toán: Cho n phân số a1/b1 ,…,an/bn (ai,bi nguyên dương), hãy tìm dãy chỉ số 1 ≤ i1 < i2 <⋯< ik ≤ n sao cho a (i1) / b (i1) < a (i2) / b (i2 ) <⋯< a (ik) / b (i_k) và k lớn nhất có thể.

Bài toán trên được mở rộng như sau: Có thể đảo lại một phân số nếu muốn (phân số ai / bi đảo lại thành phân số bi / ai ), sau đó tìm dãy chỉ số thỏa mãn đề bài mà k lớn nhất có thể.

Yêu cầu: Cho n phân số và số nguyên w, trong đó 𝑤 = 0 nghĩa là không được phép đảo bất kỳ một phân số nào (bài toán ban đầu) hoặc 𝑤 = 1 nếu được phép đảo không quá một phân số (bài toán mở rộng), hãy đưa ra giá trị 𝑘 lớn nhất có thể.
Dữ liệu: Vào từ tệp văn bản FRACTION.INP theo khuôn dạng:
Dòng đầu ghi hai số nguyên n,w(1≤n≤10^3;0≤w≤1);
Dòng thứ i trong n dòng tiếp theo chứa hai số nguyên dương a_i,b_i lần lượt là tử số và mẫu số của phân số thứ i (1≤i≤n,〖0<a〗_i,b_i≤10^9).
Kết quả: Ghi ra tệp văn bản FRACTION.OUT một số nguyên duy nhất là giá trị k lớn nhất tìm được.
Ví dụ:
FRACTION.INP    FRACTION.OUT
4 0             2
5 1
1 3
3 2
1 2 


4 1             3
5 1
1 3
3 2
1 2
Ràng buộc:
  • Có 25% số test ứng với 25% số điểm của bài thỏa mãn: n≤10,w=0;
  • Có 25% số test ứng với 25% số điểm của bài thỏa mãn: n≤10,w=1;
  • Có 25% số test ứng với 25% số điểm của bài thỏa mãn: 10<n≤10^3,w=0; </li>
  • Có 25% số test ứng với 25% số điểm của bài thoả mãn: 10<n≤10^3,w=1.</li>