提交时间:2024-04-06 11:27:06
运行 ID: 141810
#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; }