제출 #1362986

#제출 시각아이디문제언어결과실행 시간메모리
1362986tolbiAsteroid Mining (CCO25_day1problem1)C++20
25 / 25
131 ms14372 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
int32_t main(){
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  int N, M;
  cin >> N >> M;
  vector<pair<int,int>> mt(N);
  for (int i = 0; i < N; ++i) {
    cin >> mt[i].second >> mt[i].first;
  }
  int ans = 0;
  sort(mt.rbegin(), mt.rend());
  while (mt.size()) {
    vector<int> el;
    el.push_back(mt.back().second);
    int w1 = mt.back().first;
    mt.pop_back();
    while (mt.size() && mt.back().first == w1) {
      el.push_back(mt.back().second);
      mt.pop_back();
    }
    sort(el.begin(), el.end());
    if (!mt.size()) {
      int cnt = M / w1;
      while (el.size() && cnt--) {
        ans += el.back();
        el.pop_back();
      }
    } else {
      int w2 = mt.back().first;
      int cnt = (M % w2) / w1;
      while (el.size() && cnt--) {
        ans += el.back();
        el.pop_back();
      }
      M = (M / w2) * w2;
      while (el.size()) {
        cnt = 0;
        int sum = 0;
        while (el.size() && cnt++ < w2 / w1) {
          sum += el.back();
          el.pop_back();
        }
        mt.push_back({w2, sum});
      }
    }
  }
  cout << ans << '\n';
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…