Advertisement
shimulxx

Untitled

Apr 9th, 2021
387
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.28 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define max 9733
  4. vector<bool> is_prime(max + 1, true);
  5. vector<int> primes, myPrimes, ans;
  6. stack<int> mainStack;
  7. void init(int n);
  8. int main() {
  9.     freopen("input.txt", "r", stdin);
  10.     //freopen("output.txt", "w", stdout);
  11.     ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  12.     int n, q; cin >> n >> q;
  13.     for (int i = 0; i < n; ++i) {
  14.         int val; cin >> val;
  15.         mainStack.push(val);
  16.     }
  17.     init(q);
  18.     for (int i = 0; i < q && !mainStack.empty(); ++i) {
  19.         stack<int> pD, inV;
  20.         while (!mainStack.empty()) {
  21.             int val = mainStack.top();
  22.             if (val != 1 && val % myPrimes[i] == 0) pD.push(val);
  23.             else inV.push(val);
  24.             mainStack.pop();
  25.         }
  26.         while (!pD.empty()) {
  27.             ans.push_back(pD.top());
  28.             pD.pop();
  29.         }
  30.         mainStack = inV;
  31.     }
  32.     for (int i = 0; i < ans.size(); ++i) cout << ans[i] << endl;
  33.     while (!mainStack.empty()) {
  34.         cout << mainStack.top() << endl;
  35.         mainStack.pop();
  36.     }
  37.     return 0;
  38. }
  39. void init(int n) {
  40.     is_prime[0] = is_prime[1] = false;
  41.     for (int i = 2; i * i <= max; ++i) {
  42.         if (is_prime[i]) {
  43.             for (int j = i * i; j <= max; j += i) {
  44.                 is_prime[j] = false;
  45.             }
  46.         }
  47.     }
  48.     for (int i = 2; i <= max; ++i) if (is_prime[i]) primes.emplace_back(i);
  49.     for (int i = 0; i < n; ++i) myPrimes.emplace_back(primes[i]);
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement