| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1283243 | LM1 | Festival (IOI25_festival) | C++20 | 0 ms | 0 KiB |
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair<int,int>
#define ff first
#define ss second
#define pb push_back
#define vi vector<int>
#define fr(i,ii,iii) for(int i=ii;i<iii;i++)
const int M=2e14;
bool srt(pair<pii,int>a,pair<pii,int>b){
return(a.ff.ff*a.ff.ss-b.ff.ff*b.ff.ss<a.ff.ss*b.ff.ss*(a.ff.ff-b.ff.ff));
}
vector<int> max_coupons(int a,vector<int>v,vector<int>t){
vi ans;
vector<pair<pii,int>>v1;
fr(i,0,v.size()){
v1.pb({{v[i],t[i]},i});
}
sort(v1.begin(),v1.end(),srt);
for(auto i:v1){
if((a-i.ff.ff)*i.ff.ss>=0){
ans.pb(i.ss);
if(a<M)a=(a-i.ff.ff)*i.ff.ss;
}
else break;
}
return ans;
}
//signed main() {
// int N, A;
// assert(2 == scanf("%d %d", &N, &A));
// std::vector<int> P(N), T(N);
// for (int i = 0; i < N; i++)
// assert(2 == scanf("%d %d", &P[i], &T[i]));
// fclose(stdin);
//
// std::vector<int> R = max_coupons(A, P, T);
//
// int S = R.size();
// printf("%d\n", S);
// for (int i = 0; i < S; i++)
// printf("%s%d", (i == 0 ? "" : " "), R[i]);
// printf("\n");
// fclose(stdout);
//
// return 0;
//}
