QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#281739#3025. AssimilationDualqwq#WA 144ms14488kbC++20967b2023-12-10 17:13:472023-12-10 17:13:48

Judging History

你现在查看的是最新测评结果

  • [2023-12-10 17:13:48]
  • 评测
  • 测评结果:WA
  • 用时:144ms
  • 内存:14488kb
  • [2023-12-10 17:13:47]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5;
int n;
long long k,a[N],sa;
multiset<int> S1,S2;
inline void work() {
	cin >> n >> k;sa = 0;
	for(int i = 1;i <= n;i++) cin >> a[i],sa += a[i];
	S1.clear(),S2.clear();
	int ans = 0;
	for(int i = 1;i <= n;i++) S1.insert(a[i]);
	while(k < sa) {
		auto it = S1.upper_bound(k);
		if(it == S1.begin()) break;
		--it;
		k += *it;sa -= *it;S1.erase(it);
		++ans;
	}
	// while(S1.size()) {
	// 	if(k >= *S1.begin()) {
	// 		auto it = S1.upper_bound(k);
	// 		--it;
	// 		// printf("zhan:%d\n",*it);
	// 		k -= *it;S2.insert(*it);S1.erase(it);
	// 	} else if(S2.size()) {
	// 		k += 2 * (*S2.rbegin());
	// 		S2.erase(prev(S2.end()));
	// 		++ans;
	// 	} else break;
	// }
	// if(S1.size()) cout << -1 << endl;
	// else cout << ans << endl;
	if(k < sa) cout << -1 << endl;
	else cout << ans << endl;
}
int main() {
	int T;
	cin >> T;
	while(T--) work();
	return 0;
}

详细

Test #1:

score: 0
Wrong Answer
time: 144ms
memory: 14488kb

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...

output:

4
2
2
3
-1
-1
4
-1
7
5385
-1
2
-1
5
6264
3
0
-1
-1
5
-1
7
10940
1
3
100000
5
-1
-1

result:

wrong answer 6th lines differ - expected: '10621', found: '-1'