思路:
Code:
#include <bits/stdc++.h>
#define int long long
#define max(a,b) (a>b?a:b)
#define min(a,b) (a<b?a:b)
using namespace std;
const int mxn=2e5+10;
const int mxe=2e5+10;
const int mod=998244353;
int N,M;
int a[mxn];
void solve(){
cin>>N>>M;
for(int i=1;i<=N;i++) cin>>a[i];
int sum=0,ans=0;
multiset<int> S;
for(int i=M+1;i<=N;i++){
sum+=a[i];
S.insert(a[i]);
if(sum<0){
int mi=*S.begin();
sum-=2*mi;
ans++;
S.erase(S.begin());
}
}
sum=0;
S.clear();
for(int i=M;i>=2;i--){
sum+=a[i];
S.insert(a[i]);
if(sum>0){
int mx=*prev(S.end());
sum-=2*mx;
ans++;
S.erase(prev(S.end()));
}
}
cout<<ans<<'\n';
}
signed main(){
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int __=1;cin>>__;
while(__--)solve();return 0;
}