some programs!!
This commit is contained in:
1 parent
ed054247d5
commit
71f1022dea
38 files changed
+1037
-281
No files matched your search
@@ -0,0 +1,77 @@
|
||||
#include <iostream>
|
||||
|
||||
class CycledLinkedList {
|
||||
public:
|
||||
struct Node {
|
||||
int val = 0;
|
||||
Node* next = nullptr;
|
||||
Node* prev = nullptr;
|
||||
};
|
||||
|
||||
Node* head = nullptr; // They are POINTERS, not OBJECTS.
|
||||
|
||||
void push_back(int val) {
|
||||
if (head == nullptr) {
|
||||
head = new Node({.val = val});
|
||||
head->next = head;
|
||||
head->prev = head;
|
||||
return;
|
||||
}
|
||||
Node* node = new Node({.val = val});
|
||||
head->prev->next = node;
|
||||
node->prev = head->prev;
|
||||
head->prev = node;
|
||||
node->next = head;
|
||||
}
|
||||
|
||||
void remove(Node* node) {
|
||||
node->prev->next = node->next;
|
||||
node->next->prev = node->prev;
|
||||
if (node == head) {
|
||||
head = node->next;
|
||||
}
|
||||
delete node;
|
||||
}
|
||||
|
||||
void init_cycle(int n) {
|
||||
for (int i = 0; i < n; i++) {
|
||||
push_back(i);
|
||||
}
|
||||
}
|
||||
|
||||
friend std::ostream& operator<<(std::ostream& os, const CycledLinkedList& list) {
|
||||
for (Node* node = list.head->next; node != list.head; node = node->next) {
|
||||
os << node->val << "<->";
|
||||
}
|
||||
os << list.head->val << std::endl;
|
||||
return os;
|
||||
}
|
||||
};
|
||||
|
||||
int n, m, target_order;
|
||||
CycledLinkedList players;
|
||||
|
||||
int target_idx() {
|
||||
for (int i = 0; i < target_order - 1; i++) {
|
||||
for (int j = 0; j < m - 1; j++) {
|
||||
players.head = players.head->next;
|
||||
}
|
||||
players.remove(players.head);
|
||||
}
|
||||
for (int j = 0; j < m - 1; j++) {
|
||||
players.head = players.head->next;
|
||||
}
|
||||
return players.head->val;
|
||||
}
|
||||
|
||||
int main() {
|
||||
std::ios::sync_with_stdio(false);
|
||||
std::cin.tie(nullptr);
|
||||
|
||||
std::cin >> n >> m >> target_order;
|
||||
players.init_cycle(n);
|
||||
// std::clog << players << std::endl;
|
||||
std::cout << target_idx() + 1 << std::endl;
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in new issue
Block a user