AtCoder Beginner Contest 121 C問題

AtCoder Beginner Contest 121 - AtCoder

AB順調に解けて、Cが指針は立ったが実装ができず。大人しくググってlist型の配列とそのソート方法を新たに学んだ。はえ~すっごい便利な関数...

#include <bits/stdc++.h>
using namespace std;
 
int main() {
  int N, M, A, B;
  cin >> N >> M;
  vector<pair<int,int>> list(N);
   for (int i = 0; i < N; i++) {
    cin >> A >> B;
    list[i] = make_pair(A, B);
  }
  
  sort(list.begin(), list.end());
  long cost = 0;
  int drink = 0;
  
  for (int i = 0; i < N; i++) {
    for (int j = 0; j < list[i].second; j++) {
      if (drink < M) {
         drink++;
         cost += list[i].first;
      }if (drink >= M) {break;} // この break 差し込まずに提出したらTLEだった
    }if (drink >= M) {break;} // このfor探索ももっと効率化できるということか?
  }
  cout << cost << endl;
}