返回题解分享
讨论 / 题解分享/ 帖子详情

士兵 - 题解

//数组模拟链表秒了
#include<bits/stdc++.h>
using namespace std;

int n,m;
struct soldier{
    int index;
    int pre;
    int nxt;
};

int main(){
    scanf("%d%d",&n,&m);
    vector<soldier> s(n+10);
    for(int i = 1; i <= n; i++){
        s[i].index = i;
        s[i].pre = i-1;
        s[i].nxt = i+1;
    }
    int ind;
    while(m--){
        //不断维护每个死去士兵的左节点和右节点
        scanf("%d",&ind);
        int nx = s[ind].nxt;
        int pr = s[ind].pre;
        s[pr].nxt = s[ind].nxt;
        s[nx].pre = s[ind].pre;
        if(s[ind].nxt > n && s[ind].pre < 1) printf("* *\n");
        else if(s[ind].nxt > n) printf("%d *\n",s[ind].pre);
        else if(s[ind].pre < 1) printf("* %d\n",s[ind].nxt);
        else printf("%d %d\n",s[ind].pre, s[ind].nxt);
    }
}
0 回复 0 转发 0 喜欢 7 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!