求教大佬,那里不对只有30
查看原帖
求教大佬,那里不对只有30
1106976
fankejing楼主2024/6/24 11:30
#include <bits/stdc++.h>
using namespace std;

long long T,n,tmp;
long long jq=0,dd=0;
bool flag = 0;


struct xx{
	int no;
	long long value;
}a[1005],b[1005];


bool cmp(xx x,xx y){
	return x.value>y.value;
}

bool cmp1(xx x,xx y){
	return x.value<y.value;
}

int main(){
	cin>>T;
	for(int k=1;k<=T;k++){
	cin>>n; 
	for(int i=1;i<=n;i++){
		cin>>tmp;
		a[i].no=i;
		a[i].value=tmp;
		jq+=tmp;	
	}
	for(int i=1;i<=n;i++){
		cin>>tmp;
		b[i].no=i;
		b[i].value=tmp;
		dd+=tmp;
	}
	if(jq<dd){
		cout<<"No"<<"\n";
	}
	else{
			
			sort(a+1,a+n+1,cmp);
			sort(b+1,b+n+1,cmp1);
			tmp = 0;
			for(int i=1;i<=n;i++){
				if( (a[i].value+tmp)>=b[i].value ){
					tmp = (a[i].value+tmp) - b[i].value;
				}
				else{
					flag = 1;
					break;
				}
			}
			if(flag == 0){
				cout<<"Yes"<<"\n"; 
				for(int i=1;i<=n;i++){
					cout<<a[i].no<<" ";
				}
				cout<<'\n';
				for(int i=1;i<=n;i++){
					cout<<b[i].no<<" ";
				}
				cout<<'\n';
			}
			else{
				cout<<"No"<<"\n";
			}

		}
	}
}
2024/6/24 11:30
加载中...