#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
template <class T>
using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
#define ll long long
#define rep(i,a,b) for (int i = a; i < b; i++)
#define rrep(i,a,b) for (int i = a; i >= b; i--)
void N() {cout<<"NO\n";}
void Y() {cout<<"YES\n";}
void isTrue(bool ope) {if (ope) Y();else N();}
ll pw(int x,int t) {ll res = 1;while (t--) res *= x;return res;}
int lg(int x,int b) {int res = 0;while (x >= b) {x/=b;res++;}return res;}
int MD = 1e9+7;
ll MX_VL = 1e18;
ll MX_ll = 2e9;
bool comp(array<int,3>& a,array<int,3>& b) {
if (a[1] == b[1]) return a[0] < b[0];
return a[0]*a[1]*(b[1]-1) < b[0]*b[1]*(a[0]-1);
}
vector<int> max_coupons(int A, vector<int> P, vector<int> T) {
vector<array<int,3>> lst;
int n = P.size();
rep(i,0,n) {
array<int,3> vv = {P[i],T[i],i};
lst.push_back(vv);
}
sort(lst.begin(),lst.end(),comp);
int i = 0;
vector<int> ans;
ll x = A;
while (i < n) {
if (lst[i][0] > x) break;
if (x >= 1e14) {
rep(j,i,n) ans.push_back(i);
break;
}
x -= lst[i][0];
x *= lst[i][1];
ans.push_back(lst[i][2]);
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... |