# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1253657 | brinleyhong | 축제 (IOI25_festival) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
using namespace std;
#define nl "\n"
#define sp " "
#define pb push_back
typedef long long ll;
struct elm
{
int p, t, id;
};
vector <elm> arr;
int n;
ll A;
bool checksub1()
{
bool flag = true;
for (int i = 0; i<n; ++i)
{
if (arr[i].t != 1)
{
flag = false;
break;
}
}
return flag;
}
bool sortsub1(elm x, elm y)
{
return (x.p<y.p);
}
void solvesub1()
{
sort(arr.begin(), arr.end(), sortsub1);
int tokens_left = A;
vector <int> ans;
for (int i = 0; i<n; ++i)
{
if (tokens_left>=arr[i].p)
{
tokens_left-=arr[i].p;
ans.pb(arr[i].id);
}
else break;
}
cout<<ans.size()<<nl;
for (int i = 0; i<ans.size(); ++i)
cout<<ans[i]<<sp;
}
void solve()
{
cin >> n >> A;
for (int i = 1; i<=n; ++i)
{
int P, T;
cin >> P >> T;
arr.pb({P, T, i-1});
}
if (checksub1())
{
solvesub1();
}
}
int main()
{
solve();
return 0;
}