社区讨论

找了半天,哪个细节漏了(2AC 3WA)

P1160队列安排参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@m02rafa3
此快照首次捕获于
2024/08/21 02:26
2 年前
此快照最后确认于
2024/08/21 10:51
2 年前
查看原帖
CPP
#include <iostream>
using namespace std;

int pre[100001];
int nex[100001];

template <typename T>
inline void readf(T &x) {
    x = 0;
    char ch = getchar();
    while (ch < '0' || ch > '9') {
        ch = getchar();
    }
    while (ch >= '0' && ch <= '9') {
        x = (x << 1) + (x << 3) + (ch ^ 48);
        ch = getchar();
    }
    return;
}

inline void writef(int x) {
    if (x > 9) {
        writef(x / 10);
    }
    putchar((x % 10) ^ 48);
}

void left_insert(int new_node, int target) {
    pre[new_node] = pre[target];
    nex[new_node] = target;
    nex[pre[target]] = new_node;
    pre[target] = new_node;
}

void right_insert(int target, int new_node) {
    pre[new_node] = target;
    nex[new_node] = nex[target];
    pre[nex[target]] = new_node;
    nex[target] = new_node;
}

void remove(int target) {
    nex[pre[target]] = nex[target];
    pre[nex[target]] = pre[target];
}

int main() {
    int n;
    readf(n);
    left_insert(1, 0);
    for (int i = 2; i <= n; i++) {
        int target;
        bool right;
        readf(target);
        readf(right);
        if (right) {
            right_insert(target, i);
        } else {
            left_insert(i, target);
        }
    }
                          
    int m;
    readf(m);
    while (m--) {
        int target;
        readf(target);
        remove(target);
    }
    
    int p = nex[0];
    while (p) {
        writef(p);
        putchar(' ');
        p = nex[p];
    }

    return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...