40求调,过第一个测试点和最后一个
  • 板块P1160 队列安排
  • 楼主kendas
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/10/30 13:04
  • 上次更新2024/10/30 17:37:15
查看原帖
40求调,过第一个测试点和最后一个
1428433
kendas楼主2024/10/30 13:04
#include <iostream>
using namespace std;

const int N = 100005;

int pe[N], ne[N];


int main()
{
    int n;cin>>n;
    ne[0] = 2;
    pe[0] = 1;
    ne[2] = 1;
    pe[1] = 1;
    for(int i = 3; i <= n + 1; i ++)
    {
        int k, p;cin>>k>>p;
        k ++;
        if (p == 1)
        {
            pe[i] = k;
            ne[i] = ne[k];
            pe[ne[k]] = i;
            ne[k] = i;
        }
        else 
        {
            ne[i] = k;
            pe[i] = pe[k];
            ne[pe[k]] = i;
            pe[k] = i;
        }
    }
    int x;cin>>x;
    while( x --)
    {
        int t;cin>>t;
        t++;
        if(t == ne[0])
        {
            pe[ne[ne[0]]] = ne[0];
            ne[0] = ne[ne[0]];
        }
        else
        {
            ne[pe[t]] = ne[t];
            pe[ne[t]] = pe[t];
        }
    }
    for (int i = ne[0]; i != 1; i = ne[i])
    cout << i - 1<< ' '; 
    return 0;
}
真的不知道哪里有问题,感觉都挺合理的
2024/10/30 13:04
加载中...