样例2过了,样例1少一个过不了,求调
查看原帖
样例2过了,样例1少一个过不了,求调
1177287
Vistamin楼主2024/10/20 21:12
#include<bits/stdc++.h>
using namespace std;

int main()
{
	int n;
	cin>>n;
	queue<int> qu;
	int count=1;//记录输出次数,方便结束循环 
	for(int i=1;i<=n;i++)
	{
		int a;
		cin>>a;
		qu.push(a);
	}
	vector<int> link(n+1,0);
	vector<int> qu_copy(n+1,0);
	link[1]=1;
	qu_copy[1]=qu.front();
	int k=2;
	for(int i=2;i<=n;i++)
	{
		if(!qu.empty())
		{
			int t=qu.front();
			qu_copy[i]=t;
			qu.pop();
			if(qu_copy[i]==qu.front())
			{
				continue;
			}
			else
			{
				link[k]=i;
				k++;
			}
		}
	}
	
	int ans=1;

	for(int i=1;i<k;i++)
	{
		if(ans==k-1)
		{
			cout<<link[ans]<<endl;
			count++;
			qu_copy[link[ans]]=9;
		}
		else
		{
			cout<<link[ans]<<" ";
			count++;
			qu_copy[link[ans]]=9;
		}
		ans++;
	}
	
	int flag=qu_copy[1];
	
	while(count<n)
	{
//		cout<<"conunt:"<<count;
//		cout<<endl;
//		cout<<"luogu"<<n<<endl;
		k=1;
		for(int i=1;i<=n;i++)
		{
//			cout<<"TODO: kill"<<n<<endl;
			if(qu_copy[i]==9)
				continue;
			if(qu_copy[i]==flag)
			{
				continue;
			}
			else
			{
				link[k]=i;
				k++;
				flag=qu_copy[i];
//				qu_copy[i]=9;
			}
		}
		int ans=1;
		for(int i=1;i<k;i++)
		{
			if(ans==k-1)
			{
				cout<<link[ans]<<endl;
				qu_copy[link[ans]]=9;
				count++;
//		cout<<"conunt:"<<count<<endl;
			}
			else
			{
				cout<<link[ans]<<" ";
				count++;
//				cout<<"conunt:"<<count<<endl;
				qu_copy[link[ans]]=9;
			}
			ans++;
		}
			
	} 
	return 0; 
}
2024/10/20 21:12
加载中...