typedefstructlist{ int data; structlist *next; } list; typedefstructlist *LIST;
structlist *listcreat(int n){ LIST head; LIST mid; LIST end; mid = (LIST)malloc(sizeof(list)); head = mid; for (int i = 1; i <= n; i++){ mid->data = i; end = mid; if (i == n){ end->next = head; break; } mid = (LIST)malloc(sizeof(list)); end->next = mid; } return head; }
intmain(){ int n, p; scanf("%d %d", &n, &p); LIST HEAD; LIST MID; HEAD = listcreat(n); int x[n]; int flag = 0; for (int i = 1; i <= n * p; i++){ if (i % p == p - 1){ MID = HEAD->next; x[flag] = MID->data; flag++; HEAD->next = MID->next; free(MID); continue; } HEAD = HEAD->next; } for (int i = 0; i < flag; i++){ printf("%d", x[i]); if (i < flag - 1) printf(" "); else printf("\n"); } return0; }
structlist { int data; int next; }list; typedefstructlistLIST;
intmain() { int HEAD; int N;
scanf("%d %d", &HEAD, &N);
LIST list_array[100000];
intlist[N]; int list_changed[N];
int address; int data; int next;
for (int i = 0; i < N; i++) { scanf("%d %d %d", &address, &data, &next); list_array[address].data = data; list_array[address].next = next; } int flag = 0; int len = 0;
while (HEAD != -1) { list[flag] = HEAD; HEAD = list_array[HEAD].next; flag++; len++; }
flag = 0; int ind = 0; int end = len / 2; while (1) { list_changed[flag] = list[len - 1 - ind]; flag++; if (len % 2 != 0 && ind == end) break;
list_changed[flag] = list[ind]; flag++; ind++;
if (len % 2 == 0 && ind == end) break; }
for (int i = 0; i < len; i++) { if (i == len - 1) printf("%05d %d %d\n", list_changed[i], list_array[list_changed[i]].data, -1); else printf("%05d %d %05d\n", list_changed[i], list_array[list_changed[i]].data, list_changed[i + 1]); }