Hi mọi người. Mình có đang giải 1 problem sau: http://ntucoder.net/Problem/Details/2252
Mình sẽ tạo 1 vector<pair<int, int>>
để lưu trữ dữ liệu vào. Thuật toán của mình chỉ là đơn giản sort vector giảm dần theo pair.second
. Sau đó, với một nhóm phần tử có cùng giá trị pair.second
, mình sẽ sort giảm dần tiếp nhóm phần tử đó theo pair.fist
và tính từ trên xuống cho ra KQ.
VD:
10
6 0
2 0
9 1
1 2
3 0
4 2
0 2
0 1
4 0
0 2
Sau 2 lần sort theo pair.second
và pair.first
ta sẽ được:
4 2
1 2
0 2
0 2
9 1
0 1
6 0
4 0
3 0
2 0
Lúc này chỉ việc tính từ trên xuống dưới, dừng khi bi = 0, ta sẽ được output là 29.
Nhưng mình gặp khó khăn ở phần cài thuật toán, cụ thể là sau khi sort xong pair.second
, mình sẽ bắt đầu sort pair.first
cho từng nhóm phần tử. Mình lọc ra nhóm phần tử có chung giá trị pair.second
bằng lower_bound
và uppper_bound
nhưng ở đây là vector<pair<int, int>>
nên mình để:
auto first = lower_bound(v.begin(), v.end(), val);
auto last = upper_bound(v.begin(), v.end(), val);
thì không hoạt động.
Mọi người có thể hướng dẫn cho mình chỗ này được không ạ?
Xin cảm ơn.