Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
141661 | 黄戈 | 猴子选大王 | C++ | 通过 | 100 | 21 MS | 8048 KB | 880 | 2024-04-06 09:35:33 |
#include<iostream> #include<string> using namespace std; struct LB{ int pre; int next; }; LB lb[1000005]; void insertNode(int p, int x) { int p2 = lb[p].next; lb[p].next = x; lb[x].pre = p; lb[x].next = p2; lb[p2].pre = x; } void deleteNode(int x) { if (lb[x].pre == -1) { return ; } int p1 = lb[x].pre; int p2 = lb[x].next; lb[p1].next = p2; lb[p2].pre = p1; lb[x].pre = -1; lb[x].next = -1; } void traverse(){ int cur = lb[0].next; while(cur != 0) { cout << cur <<" "; cur = lb[cur].next; } } int main(){ int n,m; cin>>n>>m; for(int i=1;i<=n;i++){ lb[i].pre = i-1; lb[i].next = i+1; } lb[1].pre = n; lb[n].next = 1; int ib = 1,res; for(int i=1;i<=n*m;i++){ int tmp = lb[ib].next; if(i%m==0){ res = ib; deleteNode(ib); } ib = tmp; } cout<<res<<'\n'; return 0; }