orazma

f.cpp

Jul 17th, 2026
28
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.64 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. const int MAXN = 1e6;
  5. int a[MAXN];
  6. pair <int, int> b[MAXN];
  7. bool was[MAXN];
  8.  
  9. void solve() {
  10.     int n, p;
  11.     cin >> n >> p;
  12.     for (int i = 1; i <= n; i++){
  13.         cin >> a[i];
  14.         b[i].first = a[i];
  15.         b[i].second = i;
  16.     }
  17.     sort(b + 1, b + 1 + n);
  18.  
  19.     for (int i = 1; i <= n; i++){
  20.        // dsu[i] = i;
  21.         was[i] = 0;
  22.     }
  23.     long long ans = 0;
  24.     int cnt = 0;
  25.     for (int i = 1; i <= n; i++){
  26.         int val = b[i].first;
  27.         int pos = b[i].second;
  28.         if (val >= p){
  29.             break;
  30.         }
  31.         if (was[pos] == 1){
  32.             continue;
  33.         }
  34.         was[pos] = 1;
  35.         cnt++;
  36.         for (int j = pos + 1; j <= n; j++){
  37.             if (a[j] % val == 0 && was[j] == false){
  38.                 was[j] = 1;
  39.                 ans += val;
  40.             }
  41.             else if (a[j] % val == 0){
  42.                 ans += val;
  43.                 cnt--;
  44.                 break;
  45.             }
  46.             else{
  47.                 break;
  48.             }
  49.         }
  50.         for (int j = pos - 1; j >= 1; j--){
  51.             if (a[j] % val == 0 && was[j] == false){
  52.                 was[j] = 1;
  53.                 ans += val;
  54.             }else if (a[j] % val == 0){
  55.                 ans += val;
  56.                 cnt--;
  57.                 break;
  58.             }
  59.             else{
  60.                 break;
  61.             }
  62.         }
  63.     }
  64.     for (int i = 1; i <= n; i++){
  65.         if (!was[i])
  66.             cnt++;
  67.     }
  68.     cout << ans + p * (cnt - 1LL) << '\n';
  69.  
  70. }
  71.  
  72. int main() {
  73.     int t;
  74.     cin >> t;
  75.     while (t--) {
  76.        solve();
  77.     }
  78. }
  79.  
  80.  
Advertisement
Add Comment
Please, Sign In to add comment