#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); queue poslednja3; auto it = napredujm(begin(lista), lista, m); while(lista.size() > 1) { poslednja3.push(*it); if(poslednja3.size() > 3) poslednja3.pop(); auto iz = napreduj1(it, lista); lista.erase(it); it = napredujm(iz,lista,m-1); } poslednja3.push(*it); if(poslednja3.size() > 3) poslednja3.pop(); while(!poslednja3.empty()) { cout << poslednja3.front() << " "; poslednja3.pop(); } cout << endl; }