StoneHaos

serega1

Sep 17th, 2020 (edited)
1,151
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <list>
  3.  
  4. using namespace std;
  5.  
  6. list<int>::iterator offset(list<int>::iterator iter, int n) {
  7.     for (int i = 0; i < n; i ++)
  8.         iter ++;
  9.     return iter;
  10. }
  11.  
  12. int main(void) {
  13.     int n, k, pos = 0;
  14.     list<int> l;
  15.  
  16.     cin >> n >> k;
  17.     cout << "Before:\n";
  18.     for (int i = 1; i <= n; i ++) {
  19.         l.push_back(i);
  20.         cout << i << " ";
  21.     }
  22.  
  23.     int a = k - 1;
  24.     list<int>::iterator iter = l.begin();
  25.  
  26.     while (l.size() >= k) {
  27.         if (a == 0) {
  28.             l.erase(iter);
  29.             iter = offset(l.begin(), pos);
  30.             a = k - 1;
  31.         }
  32.         else {
  33.             pos ++;
  34.             a --;
  35.             iter ++;
  36.             if (iter == l.end()) {
  37.                 pos = 0;
  38.                 iter = l.begin();
  39.             }
  40.         }
  41.     }
  42.  
  43.     cout << "\n\nAfter:\n";
  44.     for (list<int>::iterator i = l.begin(); i != l.end(); i ++)
  45.         cout << *i << " ";
  46.     cout << "\n";
  47.     return 0;
  48. }
RAW Paste Data