求助C为什么不对
  • 板块学术版
  • 楼主wangshi
  • 当前回复8
  • 已保存回复8
  • 发布时间2023/1/6 08:27
  • 上次更新2023/10/24 05:26:09
查看原帖
求助C为什么不对
541553
wangshi楼主2023/1/6 08:27
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
#define ll long long
using namespace std;
const int N=2e5+10;
typedef pair<int,int> PII;
vector<int> b[N];
void solve()
{
	int n,f=0;
	cin>>n;
	vector<int> a(n+1),sum(n+1);
	vector<PII> ans(n+1);
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		b[a[i]].push_back(i);
	}
	for(int i=1;i<=n;i++)
	{
		if(f)
		{
			b[i].clear();
			continue;
		}
		if(b[i].size()>=3) f=1;
		else if(b[i].size()==0) sum.push_back(i);
		else if(b[i].size()==1)
		{
			ans[b[i][0]].first=i;
			ans[b[i][0]].second=i;
		}
		else
		{
			if(!sum.size())
			{
				f=1;
				b[i].clear();
				continue;
			}
			ans[b[i][0]].first=i;
			ans[b[i][0]].second=sum[0];
			ans[b[i][1]].first=sum[0];
			ans[b[i][1]].second=i;
			sum.pop_back();			
		}
		b[i].clear();
	}
	if(f) 
	{
		cout<<"NO\n";
		return;
	}
	cout<<"YES\n";
	for(int i=1;i<=n;i++)
		cout<<ans[i].first<<" ";
	cout<<"\n";
	for(int i=1;i<=n;i++)
		cout<<ans[i].second<<" ";
	cout<<"\n";
}
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	int t;
	cin>>t;
	while(t--)
	{
		solve();
	}
	return 0;
}


2023/1/6 08:27
加载中...