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.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?