#include "festival.h"
#include <bits/stdc++.h>
using namespace std;
bool comp(array<long long,3>&a, array<long long,3>&b){
if(a[0]*a[1]*b[1]+b[0]*b[1]==b[0]*a[1]*b[1]+a[0]*a[1]){
return a[0]<b[0];
}
return a[0]*a[1]*b[1]+b[0]*b[1]<b[0]*a[1]*b[1]+a[0]*a[1];
}
vector<int> max_coupons(int A, vector<int> P, vector<int> T) {
int n = P.size();
array<long long,3>arr[n];
for(int i = 0;i<n;i++){
arr[i]={P[i],T[i],i};
}
sort(arr,arr+n,comp);
vector<int>ans;
long long curr = A;
bool all = 0;
for(int i = 0;i<n;i++){
long long temp = (curr-arr[i][0])*arr[i][1];
if(temp<0){
//bad
continue;
}
curr=temp;
ans.push_back(arr[i][2]);
if(temp>1e15){
//basically inf now can but everything.
all=1;
break;
}
}
if(all){
set<int>done;
for(int i : ans){
done.insert(i);
}
for(int i = 0;i<n;i++){
if(done.find(i)==done.end()){
ans.push_back(i);
}
}
}
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... |