传送门
思路:
每个点所需的硬币数加上其权重 i + 1 ,数组按升序排序,接着按序遍历判断即可。
代码:
void solve() {
int n, k;
cin >> n >> k;
vector<int> v(n);
for (int i = 0; i < n; i++) {
cin >> v[i];
}
for (int i = 0; i < n; i++)
v[i] += i + 1;
sort(v.begin(), v.end());
int ans{};
for (int i : v)
if (k >= i) {
ans++;
k -= i;
} else
break;
cout << ans << "\n";
}