#include "festival.h"
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
#define INF 1000000000000000000LL
#define LOG 70
struct Node {
ll p,t,idx;
bool operator<(const Node &b) const {
if(t==1&&b.t==1)return p<b.p;
return p*t*(b.t-1)<b.p*b.t*(t-1);
}
};
vector<int> max_coupons(int A, vector<int> P, vector<int> T) {
vector<Node> v;
for(int i=0;i<P.size();i++) v.push_back({P[i],T[i],i} );
sort(v.begin(),v.end());
vector<int> ans;
ll a=A;
vector<Node>b[4];
for(auto &x:v) {
if(a*(x.t-1)<x.p*x.t){
if(x.t==1||b[x.t-1].size()<LOG)b[x.t-1].push_back(x);
}else{
ans.push_back(x.idx);
a=(a-x.p)*x.t;
if(a>INF){
ans.clear();
for(auto &y:v)ans.push_back(y.idx);
return ans;
}
}
}
vector<ll>s;
for(auto &x:b[0]){
if(s.size()==0)s.push_back(x.p);
else s.push_back(s.back()+x.p);
}
ll ma=-1,si[4]={-1,-1,-1,-1};
for(int i=0;i<=b[3].size();i++){
for(int j=0;j<=b[2].size();j++){
for(int k=0;k<=b[1].size();k++){
ll aa=a;
vector<Node>c;
for(int l=0;l<i;l++)c.push_back(b[3][l]);
for(int l=0;l<j;l++)c.push_back(b[2][l]);
for(int l=0;l<k;l++)c.push_back(b[1][l]);
sort(c.begin(),c.end());
bool f=true;
for(auto &x:c){
if(aa>=x.p){
aa=(aa-x.p)*x.t;
}else f=false;
}
if(f){
ll cnt=upper_bound(s.begin(),s.end(),aa)-s.begin();
if(ma<cnt+i+j+k){
ma=cnt+i+j+k;
si[0]=cnt,si[1]=k;si[2]=j;si[3]=i;
}
}
}
}
}
if(ma==-1)return ans;
vector<Node>tmp;
for(int i=0;i<4;i++){
for(int j=0;j<si[i];j++)tmp.push_back(b[i][j]);
}
sort(tmp.begin(),tmp.end());
for(auto &x:tmp)ans.push_back(x.idx);
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |