STL RE求调QAQ
查看原帖
STL RE求调QAQ
1034576
lazic楼主2023/7/9 17:13

rt,开O2RE,不开O2TLE,为啥啊呜呜呜┭┮﹏┭┮

#include<bits/stdc++.h>
using namespace std;
#define re register
inline int read();
inline void wn(int x);
inline void wi(int x);
inline void wr(int x);
vector<int> a[4];
set<int> A[4];
pair <char,char> b[1000100];
int p[40040];
int cnt;
void Fit(int x)
{
	int group=0,i=0;
	set<int>::iterator it;
	it=A[0].find(x);
	if(it==A[0].end())	group=1;
	int s=a[group].size()-1;
	while(a[group][s]!=x)	
	{
		a[group^1].push_back(a[group][s]);
		A[group].erase(a[group][s]);
		A[group^1].insert(a[group][s]);
		s--,a[group].pop_back();
		cnt++;
		b[cnt].first=(char)('A'+group);
		b[cnt].second=(char)('A'+(group^1));
	}
	a[group].pop_back();
	cnt++;
	b[cnt].first=(char)('A'+group);	
	b[cnt].second='C';
}
signed main()
{
	//freopen("a.in","r",stdin);
	//freopen("a.out","w",stdout);
	//printf("%d M\n",((sizeof(z))>>20));
	int n=read();
	for(re int i=1;i<=n;++i)	p[i]=read();
	
	for(re int i=n;i>=1;--i)	a[0].push_back(p[i]),A[0].insert(p[i]);
	
	
	for(re int i=n;i>=1;--i)	Fit(i);
	cout<<cnt<<endl;
	for(re int i=1;i<=cnt;++i)	cout<<b[i].first<<' '<<b[i].second<<'\n';
	return 0;
}





//========================================================================================================================
inline int read()
{
	int f=1,x=0;
	char ch=getchar();
	while(ch<'0'||ch>'9')
	{
		if(ch=='-')	f=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9')
	{
		x=(x<<3)+(x<<1)+ch-'0';
		ch=getchar();
	}
	return x*f;
}
inline void wn(int x)
{
	if(x<0)
	{
		putchar('-');
		wn(-x);
		return ;
	}
	if(x>=10)	wn(x/10);
	putchar('0'+x%10);
}
inline void wi(int x){wn(x),putchar(' ');}
inline void wr(int x){wn(x),putchar('\n');}
2023/7/9 17:13
加载中...