| # | 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;
//}
