暴力90pts,t了第八个点,是不是暴力最多只有90pts了
查看原帖
暴力90pts,t了第八个点,是不是暴力最多只有90pts了
1284861
luogudashe楼主2024/9/30 12:54

暴力好用,但是建议不要学我

#include <bits/stdc++.h>
using namespace std;
void js1()
{
	int n,x,f=0,f1=1;
	vector<int> a,id;//a原始数据,id存下标
	vector<int>::iterator i,j,k,y;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&x);
		a.push_back(x);
		id.push_back(i);
	}
	while(!a.empty())
	{
		if(f1==0)
		{
		for(j=id.begin();j!=id.end();j++)
			printf("%d\n",*j);
			return;
		}//特判,只剩一个块时顺序输出下标
		i=a.begin(),j=id.begin();
		x=*i;
		printf("%d ",*j);
		a.erase(i);
		id.erase(j);
		f1=0;
		f=0;
		for(i=a.begin(),j=id.begin();i<=a.end(),j<=id.end();i++,j++)
		{
			if(f==1)i=k,j=y;
			f=0;
			if(x!=*i)//找到一个不同直接输出,弹出后接着遍历a数组
			{
			    x=*i;
				printf("%d ",*j);
				a.erase(i);
				id.erase(j);//下标也要跟着弹出
				k=i,y=j;//保存当前下标,弹出当前数据后继续从该下标开始遍历
				f=1;
				f1=1;
			}
		}
		printf("\n");
	}
}
int main()
{
	js1();
	return 0;
}
2024/9/30 12:54
加载中...