Advertisement
ChoDog

E: 2vec

Nov 22nd, 2019
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.91 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4.  
  5. using namespace std;
  6.  
  7. #define int long long
  8.  
  9. int gsd(int a, int b) {
  10.     return (b == 0 ? a : gsd(b, a % b));
  11. }
  12.  
  13. int main() {
  14.     int n, k, news;
  15.     cin >> n >> k;
  16.     vector<int> vec(n);
  17.     for (int i = 0; i < n; i++) cin >> vec[i];
  18.     for (int i = 0; i < k - (n % k); i++) vec.push_back(0);
  19.     vector<int> l(1, 0), r(1, 0);
  20.  
  21.     for (int j = k - 1; j >= 0; j--)
  22.         l.push_back(gsd(max(l.back(), vec[j]), min(l.back(), vec[j])));
  23.     int maxx = l.back();
  24.  
  25.     for (int i = k; i < vec.size(); i++) {
  26.        
  27.         if (l.size() == 1) {
  28.             r.clear(); r.push_back(0);
  29.             for (int j = i - 1; j >= i - k; j--)
  30.                 l.push_back(gsd(max(l.back(), vec[j]), min(l.back(), vec[j])));
  31.         }
  32.  
  33.         l.pop_back();
  34.         r.push_back(gsd(max(r.back(), vec[i]), min(r.back(), vec[i])));
  35.         maxx = max(maxx, gsd(max(r.back(), l.back()), min(r.back(), l.back())));
  36.     }
  37.  
  38.     cout << maxx;
  39.     return 0;
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement