#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define sz(a) (int)a.size()
#define all(a) begin(a),end(a)
using ll = long long;
using vi = vector<int>;
const int mxN = (int)5e5+10;
int n, best=-1, mx=-1;
long double w, x=1, sum,cost;
long double s[mxN], q[mxN];
set<array<ll,2>> S;
int main(){
	ios_base::sync_with_stdio(false); cin.tie(0);
	cin >> n >> w;
	for(int i = 0; i < n; i++) cin >> s[i] >> q[i];
	vi ord(n,0); iota(all(ord),0);
	sort(all(ord),[&](int i, int j){
		return s[i]*q[j] < s[j]*q[i];
	});
	for(int i : ord){
		x = s[i]/q[i];
		S.insert({q[i],i}),sum+=q[i];
		while(sz(S) and sum*x>w) 
			sum-=(*prev(end(S)))[0], S.erase(prev(end(S)));
		if(sz(S)>mx) mx=sz(S), best=i,cost=sum*x;
		else if(sz(S)==mx and sum*x < cost) best=i, cost=sum*x;
	}
	S.clear(); sum = 0;
	for(int i : ord){
		x = s[i]/q[i];
		S.insert({q[i],i}),sum+=q[i];
		while(sz(S) and sum*x>w) 
			sum-=(*prev(end(S)))[0], S.erase(prev(end(S)));
		if(sz(S)>mx) mx=sz(S), best=i,cost=sum*x;
		else if(sz(S)==mx and sum*x < cost) best=i, cost=sum*x;
		if(best==i){
			cout << sz(S) << "\n";
			for(auto [a,b] : S) cout << b+1 << "\n";
			return 0;
		}
	}
}
컴파일 시 표준 에러 (stderr) 메시지
hiring.cpp: In function 'int main()':
hiring.cpp:24:30: warning: narrowing conversion of 'q[i]' from 'long double' to 'long long int' [-Wnarrowing]
   24 |                 S.insert({q[i],i}),sum+=q[i];
      |                           ~~~^
hiring.cpp:33:30: warning: narrowing conversion of 'q[i]' from 'long double' to 'long long int' [-Wnarrowing]
   33 |                 S.insert({q[i],i}),sum+=q[i];
      |                           ~~~^| # | 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... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |