제출 #1252474

#제출 시각아이디문제언어결과실행 시간메모리
1252474comgaTramAnh축제 (IOI25_festival)C++20
5 / 100
57 ms6840 KiB
#include <bits/stdc++.h> 
#include "festival.h"

using namespace std;
std::vector <int> max_coupons(int A, std::vector <int> P, std::vector <int> T) {
  std::vector <int> ret;
  std::vector <std::vector <std::pair <int, int>>> save(5);
  for (int i = 0; i < (int) T.size(); i++) {
    save[T[i]].push_back(std::make_pair(P[i], i)); 
  }  
  for (int i = 1; i <= 4; i++) {
    std::sort(save[i].begin(), save[i].end()); 
    std::reverse(save[i].begin(), save[i].end()); 
  }
  long long X = A; 
  while (true) {
    bool checkEmpty = true; 
    for (int i = 1; i <= 4; i++) {
      if (save[i].empty() == false) {
        checkEmpty = false; 
      }
    }
    if (checkEmpty == true) {
      break; 
    }
    long long maxi = -1; 
    int type = -1;
    int id = -1;  
    for (int i = 1; i <= 4; i++) {
      if (save[i].empty() == true) {
        continue; 
      }
      std::pair <int, int> element = save[i].back(); 
      if (X >= element.first) {
        if (maxi < (X - element.first) * i) {
          maxi = (X - element.first) * i;
          type = i;
          id = element.second; 
        }   
      }
    }
    if (type == -1) {
      break; 
    }
    save[type].pop_back(); 
    ret.push_back(id);
    X = maxi;  
  }
  return ret; 
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...