50分求解
查看原帖
50分求解
1447928
syc_want_AC楼主2024/11/3 14:54

6,7,8,9,10错了

#include<bits/stdc++.h>
const int N=1e3+10;
using namespace std;
int t;
int n;
struct node{
	int xp,sl;
}a[N],b[N];
bool cmp(node x,node y)
{
	if(x.sl!=y.sl)
	return x.sl>y.sl;
}
int main()
{
	cin>>t;
	for(int s=1;s<=t;s++)
	{
		cin>>n;
		for(int i=1;i<=n;i++)
		{
			cin>>a[i].sl;
			a[i].xp=i;
		}
		sort(a+1,a+n+1,cmp);
		for(int i=1;i<=n;i++)
		{
			cin>>b[i].sl;
			b[i].xp=i;
		}
		sort(b+1,b+n+1,cmp);
		int ans=0;
		for(int i=1;i<=n;i++)
		{
			if(a[i].sl>=b[i].sl)
			{
				ans++;
				a[i+1].sl=a[i+1].sl+a[i].sl-b[i].sl;
			}
		}
		if(ans==n)
		{
			cout<<"Yes"<<endl;
			for(int i=1;i<=n;i++)
			cout<<a[i].xp<<" ";
			cout<<endl;
			for(int i=1;i<=n;i++)
			cout<<b[i].xp<<" ";
			cout<<endl;
		}
		else
		cout<<"No"<<endl;
	}

	return 0;
}

2024/11/3 14:54
加载中...