QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#241401 | #3025. Assimilation | climaxcx | RE | 0ms | 0kb | C++14 | 914b | 2023-11-06 05:30:37 | 2023-11-06 05:30:38 |
answer
#include<bits/stdc++.h>
using namespace std;
const int inf = 2000000001;
bool check(int n, int mob, multiset<int>S, long long k){
for(int i = 0; i < mob; i++){
auto it = S.upper_bound(k);
it--;
if(*it == -1)return false;
k += *it;
S.erase(it);
}
for(int i = 0; i < n - mob; i++){
auto it = S.upper_bound(k);
it--;
if(*it == -1)return false;
k -= *it;
S.erase(it);
}
return true;
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int z;
cin >> z;
while(z--){
int n;
long long k;
cin >> n >> k;
multiset<int>S;
for(int i = 0; i < n; i++){
int x;
cin >> x;
S.insert(x);
}
S.insert(-1);
int l = 0, r = n;
while(l <= r){
int mid = l + (r-l)/2;
if(check(n, mid, S, k))r = mid - 1;
else l = mid + 1;
}
if(l == n + 1)cout << "-1\n";
else cout << l << '\n';
}
return 0;
}
详细
Test #1:
score: 0
Runtime Error
input:
29 9 1 1 1 2 1 1 1 1 1 1 4 1 3 2 1 1 5 316660370 269357435 105688553 346785866 295093544 181703417 6 43402885 39947441 27068237 43810814 44913378 40095941 34779892 22 319594 3815194 3056481 6593888 7315914 6593888 4794774 2561877 5256242 4920603 5256242 3606645 864746 1594265 1235578 2361430 2277526...