10pts求调 qwq
查看原帖
10pts求调 qwq
511609
无钩七不改名楼主2023/2/7 22:21

https://www.luogu.com.cn/record/101666076

#include<bits/stdc++.h>
using namespace std;

int T,n,p[100005];
long long a,b;
long long ans,aans,bans;

int main(){
	scanf("%d",&T);
	while(T--){
		scanf("%d%lld%lld",&n,&a,&b);
		aans=0;ans=0;
		int mid=n/2;
		for(int i=1;i<=mid;i++){
			ans+=i;
			p[i]=i;
		}
		aans=ans;
		for(int i=mid+1;i<=n;i++){
			ans+=i;
			p[i]=i;
		}
		bans=ans-aans;
		if(ans<a+b||bans<b||bans<a){printf("-1\n");continue;}
		int k=n-1,nw=1;
		while(aans<a){
			if(a-aans<=k){
				swap(p[nw],p[nw-aans+a]);
				aans=a;
			}
			else {
				swap(p[nw],p[nw+k]);
				nw++;
				aans+=k;
				k-=2;
			}
		}
		for(int i=1;i<=n;i++)printf("%d ",p[i]);
		printf("\n");
	}
	return 0;
} 

RT. thx qwq

2023/2/7 22:21
加载中...