蒟蒻求调
查看原帖
蒟蒻求调
889917
limingyuan333楼主2024/1/27 11:38
#include<bits/stdc++.h>
#include<queue>
using namespace std;
priority_queue<int>q;
string d ;
struct node {
	int x,f;
};
node a[1000100];
int n,vis[100010];

int main() {
	int ans=0,sum=0;
	cin>>n;
	cin>>d;
	for(int i=1;i<=n;i++) {
		cin>>a[i].f;
		a[i].x=i;
		if(d[i-1]=='B') {
			vis[i]=1;
			ans++;
		} else{
			vis[i]=0;
			sum++;
		}
	}
	if(ans==sum) {
		cout<<ans<<endl;
	} else {
		cout<<min(ans,sum)<<endl;
	}
	int minn,k,kk=0;
	for(int i=1;i<=min(ans,sum);i++) {
		k=0;
		minn=1e9;
		for(int j=1;j<n;j++) {
			if(vis[j]!=vis[j+1]&&abs(a[j].f-a[j+1].f)<minn) {
				minn=abs(a[j].f-a[j+1].f);
				k=j;
			}
		}
		cout<<a[k].x<<" "<<a[k+1].x<<endl;
		kk++;
		a[k].f=0x3f3f3f3f;
		a[k+1].f=1e9;
		for(int l=k;l<n-1;l++) {
			swap(a[l].f,a[l+1].f);
			swap(vis[l],vis[l+1]);
		}
	}
	return 0;

2024/1/27 11:38
加载中...