### G.
一眼看上去很想個揹包,然後發現好像不大能做。
考慮反悔貪心。
對於當前的 $c_i$,如果到現在攢的錢足夠買這個,那就直接買了它。如果錢不夠,就從之前的買過的裡面把一個最大的給退掉,然後買這個,優先佇列維護即可。
```c++
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e6 + 7;
int c[N];
void solve() {
int n, x;
cin >> n >> x;
for(int i = 1; i <= n; i ++) {
cin >> c[i];
}
int now = 0;
priority_queue<int> q;
for(int i = 1; i <= n; i ++) {
if(c[i] <= now) {
now -= c[i];
q.push(c[i]);
}
else {
if(!q.empty() && q.top() > c[i]) {
int u = q.top();
q.pop();
now = now + u - c[i];
q.push(c[i]);
}
}
now += x;
}
cout << q.size() << endl;
}
signed main() {
int T;
cin >> T;
while(T --) solve();
}
```