求hack
查看原帖
求hack
572482
Dream_weavers楼主2022/5/29 12:00

做法有点玄学,sort就TLE了,priority_queue <int,vector,greater >就不会TLE但会WA,在第二个测试点WA了,CF数据太多看不到全部,求hack

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+5;
int t,n,mid,tot,flag;
priority_queue <int,vector<int>,greater<int> > q;
deque <int> a,b;
signed main(){
	scanf("%lld",&t);
	while(t--){
		a.clear(),b.clear();
		flag=1,tot=0;
		scanf("%lld",&n);
		for(int i=1;i<=n;i++){
			int x;
			scanf("%lld",&x);
			q.push(x);	
		}
		while(!q.empty()){
			a.push_back(q.top());
			q.pop();
		}
		int fro=a.front(),bac=a.back();
		a.push_front(bac),a.push_back(fro);
		mid=n/2;
		for(int i=1,j=mid+1;(i<=mid||j<=n);i++,j++){
			if(i==1){
				if(!(a[0]>a[i]&&a[i]<a[j])||!(a[i]<a[j]&&a[j]>a[i+1])){
					flag=0;
					break;	
				}
			}
			else if(j==n){
				if(!(a[j-1]>a[i]&&a[i]<a[j])||!(a[i]<a[j]&&a[j]>a[n+1])){
					flag=0;
					break;
				}
			}
			else{
				if(!(a[j-1]>a[i]&&a[i]<a[j])||!(a[i]<a[j]&&a[j]>a[i+1])){
					flag=0;
					break;
				}	
			}
			b.push_back(a[i]),b.push_back(a[j]);		
		}
		if(!flag){
			puts("NO");
			continue;
		}
		puts("YES");
		for(int i=0;i<n;i++)printf("%lld ",b[i]);
		puts("");
	}
	return 0;
}  
2022/5/29 12:00
加载中...