/ SeriousOJ /

Record Detail

Wrong Answer


  
# Status Time Cost Memory Cost
#1 Accepted 187ms 22.043 MiB
#2 Wrong Answer 189ms 22.09 MiB
#3 Wrong Answer 195ms 22.203 MiB
#4 Wrong Answer 184ms 22.145 MiB
#5 Wrong Answer 229ms 22.312 MiB
#6 Wrong Answer 215ms 22.066 MiB
#7 Wrong Answer 222ms 22.488 MiB
#8 Wrong Answer 192ms 22.582 MiB
#9 Wrong Answer 158ms 22.555 MiB
#10 Accepted 214ms 22.52 MiB
#11 Accepted 155ms 22.523 MiB
#12 Wrong Answer 168ms 22.559 MiB
#13 Wrong Answer 181ms 22.566 MiB
#14 Wrong Answer 167ms 22.816 MiB
#15 Wrong Answer 209ms 22.191 MiB
#16 Accepted 181ms 22.27 MiB
#17 Accepted 293ms 22.285 MiB
#18 Wrong Answer 213ms 22.281 MiB
#19 Wrong Answer 204ms 22.273 MiB
#20 Wrong Answer 229ms 22.285 MiB

Code

#include <bits/stdc++.h>
using namespace std;

#define FAST ios_base::sync_with_stdio(false);cin.tie(NULL);
using ll = long long;

const int INF = 1'000'000'000;
const int MX = 200005;
vector<int> divs[MX];
int dis[MX];

void pre() {
  int i, j;
  for (i = 1; i < MX; ++i) {
    for (j = i; j < MX; j += i) divs[j].push_back(i);
  }
}

int main() {
  FAST;
  pre();
  
  int tc = 1, ti;
  cin >> tc;

  for (ti = 1; ti <= tc; ++ti) {
    int n, k, i, x, ans;
    cin >> n >> k;

    for (i = 0; i < MX; ++i) dis[i] = INF;

    vector<int> a(n);
    for (i = 0; i < n; ++i) cin >> a[i];

    dis[a[0]] = 0;

    for (i = 0; i < n; ++i) {
      x = a[i];
      for (int d : divs[x]) {
        dis[x] = min(dis[x], dis[d]);
      }
      for (int d : divs[x]) {
        dis[d] = min(dis[d], dis[x] + x/d);
      }
    }

    ans = (n-1) * k;
    if (n == 1) {
      ans = 0;
    } else if (a[n-1] % a[0] == 0) {
      ans = 1;
    } else {
      for (i = 0; i < n; ++i) {
        ans = min(ans, max(dis[a[i]], 1) + (n-i-1) * k);
      }
    }
    
    cout << ans << "\n";
  }

  return 0;
}

Information

Submit By
Type
Submission
Problem
P1099 Which way to go
Language
C++17 (G++ 13.2.0)
Submit At
2024-10-03 20:19:40
Judged At
2024-10-03 20:19:40
Judged By
Score
25
Total Time
293ms
Peak Memory
22.816 MiB