听灌多,求调蓝题(违规紫衫)
  • 板块灌水区
  • 楼主xiaolan411
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/1/13 15:21
  • 上次更新2025/1/13 18:35:03
查看原帖
听灌多,求调蓝题(违规紫衫)
527057
xiaolan411楼主2025/1/13 15:21

P1029713pts,#13,#23WA,代码如下:

#include <bits/stdc++.h>
using namespace std;
int n,a[300005],b[300005],zb[300005][2],ls=0,t=1,ans;
bool non,m[300005];
int main(){
	cin>>n;
	for (int i=1;i<=n;i++){
		cin>>a[i];
		m[a[i]]=i;
	}
	for (int i=1;i<=n;i++){
		cin>>b[i];
	}
	for (int i=1;i<=n;i++){
		if (a[i]==b[ls+1]){
			ls++;
		}
		while (b[ls]==b[ls+1]) ls++;
		if (a[i]==b[ls]&&i<ls){
			zb[i][0]=ls;
			ans++;
		}
	}
	if (ls==n) cout<<"YES"<<endl;
	else {
		cout<<"NO";
		return 0;
	}
	ls=n+1;
	for (int i=n;i>0;i--){
		if (a[i]==b[ls-1]){
			ls--;
		}
		while (b[ls]==b[ls-1]) ls--;
		if (a[i]==b[ls]&&i>ls){
			zb[i][1]=ls;
			ans++;
		}
	}
	
	cout<<ans<<endl;
	for (int i=1;i<=n;i++){
		if (zb[i][1]){
			cout<<"L "<<zb[i][1]-1<<" "<<i-1<<endl;
		}
	}
	for (int i=n;i>0;i--){
		if (zb[i][0]){
			cout<<"R "<<i-1<<" "<<zb[i][0]-1<<endl;
		}
	}
	return 0;
}

谢谢!

2025/1/13 15:21
加载中...