Problem ID:
tilingblocks
Points:
2.5 (partial)
Time limit:
1.0s
Memory limit:
256M
Input:
stdin
Output:
stdout
Author:
Problem type
Allowed languages
C, C++, Java, Pascal, Perl, Python
Sau khi đã tìm ra được cách để có voucher giá trị lớn nhất, Pusheen - một chú mèo năng động tiếp tục tham gia trò chơi có thưởng của Taka. Luật trò chơi như sau:
- BTC cung cấp ~n~ viên gạch có đáy hình chữ nhật, viên gạch thứ ~i~ có chiều rộng ~a_i~ và chiều dài ~b_i~ và chiều cao là ~1~.
- Người chơi tiến hành chọn các viên gạch và xếp chồng lên cao dần. Viên gạch đầu tiên có thể chọn bất kì. Các viên gạch sau, viên gạch ~i~ được phép xếp trên viên gạch ~j~ nếu ~a_i \le a_j~ và ~b_i \le b_j~ ~(i \ne j)~.
- Điểm thưởng mà người chơi đạt được sẽ bằng độ cao của tháp gạch mà người chơi xếp được.
Pusheen sẽ chơi trò này nhiều lần, bạn hãy giúp Pusheen tìm số điểm thưởng lớn nhất mà Pusheen có thể đạt đượt trong từng lần chơi nhé.
Input
Dòng đầu tiên chứa số nguyên ~t~ ~(1 \le t \le 5)~ - số lần chơi của của Pusheen.
Với mỗi lần chơi:
- Dòng đầu tiên chứa số nguyên dương ~n~.
- ~n~ dòng tiếp theo, mỗi dòng chứa hai số nguyên ~a_i, b_i~ ~(1 \le a_i \le b_i \le 10^9)~.
Output
Gồm ~t~ dòng, mỗi dòng ghi số điểm thưởng lớn nhất mà Pusheen có thể đạt được tại lần chơi tương ứng.
Giới hạn
- Subtask ~1~: ~20\%~ số điểm có ~n \le 20~.
- Subtask ~2~: ~30\%~ số điểm có ~a_1 =a_2 = a_3 = ... = a_n~ và ~n \le 2.10^5~.
- Subtask ~3~: ~30\%~ số điểm có ~n \le 2000~.
- Subtask ~4~: ~20\%~ số điểm còn lại có ~n \le 2.10^5~.
Sample Input
3
5
1 2
9 2
5 6
10 3
2 1
3
5 5
2 2
1 1
2
2 2
2 2
Sample Output
3
3
2
Giải thích
Ở ví dụ đầu tiên, một cách xếp tối ưu là xếp các viên gạch ~4 \to 2 \to 1~.
Comments