求助,奇怪的错误
查看原帖
求助,奇怪的错误
388392
秋林一梦楼主2024/4/24 23:02
#pragma ccc optimize(3)
#pragma ccc optimize(2)
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define re register
#define INF 0x3f3f3f3f
#define il inline
#define pb push_back
#define ft first
#define sd second
#define mp make_pair
#define INF 0x3f3f3f3f
#define pb push_back
//#define cin fin
//#define cout fout
//ifstream cin("文件名.in");
//ofstream cout("文件名.out");
const int MAXN = 3e5;
ll a[MAXN + 5], ans[MAXN + 5];
void solve(){
	int n;
	cin >> n;
	ll maxn = 0;
	for(int i = 1; i <= n; ++i){
		cin >> a[i];
		maxn = max(maxn, a[i]); 
	}
	if(maxn == 0){
		cout << "No" << endl;
		return;
	}
	cout << "Yes" << endl;
	priority_queue<ll,vector<ll>,greater<ll> > pq1;
	priority_queue<ll> pq;
	for(int i = 1; i <= n; ++i){
		if(a[i] < 0)pq.push(a[i]);
		else pq1.push(a[i]);
	}
	ll sum = 0;
	while((!pq.empty()) || (!pq1.empty())){
		if(pq.empty()){
			cout << pq1.top() << ' ';
			pq1.pop();
			continue;
		}
		else if(pq1.empty()){
			cout << pq.top() << ' ';
			pq.pop();
			continue;
		}
		if(sum == 0){
			if(pq.size() > pq1.size()){
				cout << pq.top() << ' ';
				sum += pq.top();
				pq.pop();
			}
			else{
				cout << pq1.top() << ' ';
				sum += pq1.top();
				pq1.pop();
			}
		}
		else{
			if(sum + pq1.top() + pq.top() < 0){
				cout << pq1.top() << ' ';
				sum += pq1.top();
				pq1.pop();
			}
			else{
				cout << pq.top() << ' ';
				sum += pq.top();
				pq.pop();
			}
		}	
	}
	cout << endl; 
}
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int t;
	cin >> t;
	for(re int o = 0; o < t; ++o){
		solve();
	}
	return 0;
}

第66行加上等于号就过了,百思不得其解,故向佬乞援。

2024/4/24 23:02
加载中...