为什么WA10
查看原帖
为什么WA10
768325
Herbie_ZHB楼主2024/4/27 08:41
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
typedef long long ll;
int n,a[N],k;
bool vis[N];
char s[N];
priority_queue< pair<int,int>,vector< pair<int,int> >,greater< pair<int,int> > > q;
struct node{
	int l,r;
}ans[N];
int rt[N];
int main(){
	scanf("%d%s",&n,s+1);
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
		if(i>1&&s[i-1]!=s[i]){
		    q.push(make_pair(abs(a[i]-a[i-1]),i-1));
		    rt[i-1]=i;
		}
	} 
	while(q.size()){
	    int x=q.top().second;
		q.pop();
	    int y=rt[x];
	    if(vis[x]||vis[y])continue;
	    vis[x]=vis[y]=1;
	    k++;
	    ans[k].l=x;ans[k].r=y;
	    if(x-1>=1&&y+1<=n&&s[x-1]!=s[y+1]){
	    	q.push(make_pair(abs(a[x-1]-a[y+1]),x-1));
	    	rt[x-1]=y+1;
	    }
	}
	cout<<k<<endl;
	for(int i=1;i<=k;i++){
		cout<<ans[i].l<<' '<<ans[i].r<<endl;
	}
	return 0;
}
2024/4/27 08:41
加载中...