#include #include #include using namespace std; // "Prekoraceno vremensko ogranicenje" list::iterator napreduj1(list::iterator it, list &lista) { ++it; if(it==lista.end()) { return lista.begin(); } return it; } list::iterator napredujm(list::iterator it, list &lista, int m) { for(int i = 0; i < m; i++) { it = napreduj1(it, lista); } return it; } // O(n*m) int main() { int n, m; cin >> n >> m; m %= n; list lista; for(int i = n-1; i >= 0; i--) lista.push_front(i); deque izbaceni; auto it = napredujm(begin(lista), lista, m); while(lista.size() > 1) { izbaceni.push_back(*it); // if(poslednja3.size() > 3) poslednja3.pop(); auto iz = napreduj1(it, lista); lista.erase(it); it = napredujm(iz,lista,m-1); } izbaceni.push_back(*it); // if(poslednja3.size() > 3) poslednja3.pop(); int izb_poslednji = izbaceni.back(); izbaceni.pop_back(); int izb_pretposlednji = izbaceni.back(); izbaceni.pop_back(); int izb_pretpretposlednji = izbaceni.back(); cout << izb_pretpretposlednji << " " << izb_pretposlednji << " " << izb_poslednji << endl; }