资深光能
为什么一编译就:
求大佬:
#include<iostream>
#include<queue>
#include<cmath>
using namespace std;
struct data{
int c;
int b,g;
bool f;
};
priority_queue< data,vector<data>,greater<data> >q;
int n;
int m[100010];
bool flag[100010];
char sex[100010];
int main()
{
cin>>n;
cin>>sex[1];
for(int i=1;i<=n;i++)
{
cin>>sex[i];
}
for(int i=1;i<=n;i++)
{
cin>>m[i];
}
for(int i=2;i<=n;i++)
{
if(sex[i]=='B' && sex[i-1]=='G')
{
int w=abs(m[i]-m[i-1]);
q.push((data){w,i,i-1});
}
else if(sex[i]=='G' && sex[i-1]=='B')
{
int w=abs(m[i]-m[i-1]);
q.push((data){w,i-1,i});
}
}
int b1,g1;
while(!q.empty())
{
data pq=q.top();
q.pop();
if(pq.f || flag[pq.b] || flag[pq.g])continue;
else
{
pq.f=true;
b1=pq.b,g1=pq.g;
flag[b1]=true;
flag[g1]=true;
for(int i=b1;i>=1;i--)
{
if(sex[g1+i-b1]=='G' && sex[i]=='B')
{
q.push((data){abs(m[g1+i-b1]-m[i]),i,g1+i-b1});
}else if(sex[g1+i-b1]=='B' && sex[i]=='G')
{
q.push((data){abs(m[g1+i-b1]-m[i]),g1+i-b1,i});
}
}
cout<<b1<<" "<<g1<<endl;
}
}
return 0;
}