求助,为什么全部WA了,QAQ
  • 板块P1878 舞蹈课
  • 楼主douzi
  • 当前回复0
  • 已保存回复0
  • 发布时间2021/8/8 16:06
  • 上次更新2023/11/4 11:37:13
查看原帖
求助,为什么全部WA了,QAQ
278697
douzi楼主2021/8/8 16:06
#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> pii;
typedef long long ll;
const int N=2e5+5;
char r[N];
int v[N];
int a[N];
struct node{
    int x,y,z;
    bool operator < (const node b)const{
        if(z==b.z)return x>b.x;
        return z>b.z;
    }
};
int main() {
    int n;
    priority_queue<node,vector<node> > p;
    scanf("%d",&n);
    scanf("%s",r+1);
    for(int i=1;i<=n;i++)scanf("%d",&a[i]);
    for(int i=1;i<n;i++){
        if(r[i]!=r[i+1]){
            p.push({i,i+1,abs(a[i+1]-a[i])});
        }
    }
    vector<pair<int,int>>res;
    while(!p.empty()){
        node t=p.top();
        int x=t.x,y=t.y;
        if(!v[x] && !v[y]){
            res.push_back({x,y});
            v[x]=v[y]=1;
            while(x>0 && v[x])x--;
            while(y<=n && v[y])y++;
            if( x>0 && y<=n && r[x]!=r[y]){
                p.push({x,y,abs(a[x]-a[y])});
            }
        }
        p.pop();
    }
    printf("%d\n",res.size());
    for(pii i:res)
        printf("%d %d\n",i.first,i.second);
    return 0;
}
2021/8/8 16:06
加载中...