20求大佬调,实在想不到漏洞了
查看原帖
20求大佬调,实在想不到漏洞了
878640
_BLACK_CAT楼主2024/3/12 08:23
#include <bits/stdc++.h>
using namespace std;

struct Node {
    int idx, val;
    Node(int i = 0, int v = 0) {
        idx = i, val = v;
    }
};
const int MS = 1e5 + 2;
int pred[MS], succ[MS];//存储前驱、后继的索引 
Node li[MS];//list
int pos = 2;
const int head = 0;
const int tail = MS - 1;

void ins(int x, int y) {//insert 
    int i = succ[head];
    while (i != tail && li[i].val != x) i = succ[i];

    li[pos].idx = pos, li[pos].val = y;
    pred[pos] = i;
    succ[pos] = succ[i];
    pred[succ[i]] = pos;
    succ[i] = pos;
    pos++;
}
void del(int x) {//delete
    int i = succ[head];
    while (i != tail && li[i].val != x) i = succ[i];
    if (i == tail) return;

    succ[pred[i]] = succ[i];
    pred[succ[i]] = pred[i];
}
void print(int x) {
    int i = succ[head];
    while (i != tail && li[i].val != x) i = succ[i];
    
    printf("%d\n", li[succ[i]].val);
}

int N;

int main() {
    li[head].idx = head, li[head].val = 0;
    pred[head] = -1, succ[head] = 1;
    li[1].idx = 1, li[1].val = 1;
    pred[1] = head, succ[1] = tail;
    li[tail].idx = tail, li[tail].val = 0;
    pred[tail] = 1, succ[tail] = -1;

    scanf("%d", &N);
    while (N--) {
        int cmd, x, y;
        scanf("%d", &cmd);
        switch (cmd) {
        case 1:
            scanf("%d%d", &x, &y);
            ins(x, y);
            break;
        case 2:
            scanf("%d", &x);
            print(x);
            break;
        case 3:
            scanf("%d", &x);
            del(x);
            break;
        }
/*
printf("li: \n");        
for (int i = succ[head]; i != tail; i = succ[i])
    printf("%d ", li[i].val);
printf("\n");  
*/
  
    }

    return 0;
}
2024/3/12 08:23
加载中...