/ SeriousOJ /

Record Detail

Time Exceeded


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 532.0 KiB
#2 Accepted 2ms 324.0 KiB
#3 Accepted 43ms 576.0 KiB
#4 Time Exceeded ≥2099ms ≥636.0 KiB
#5 Time Exceeded ≥2098ms ≥792.0 KiB
#6 Time Exceeded ≥2100ms ≥2.633 MiB
#7 Time Exceeded ≥2001ms ≥9.371 MiB
#8 Time Exceeded ≥2101ms ≥5.383 MiB
#9 Time Exceeded ≥2000ms ≥9.305 MiB
#10 Time Exceeded ≥2100ms ≥2.395 MiB
#11 Time Exceeded ≥2099ms ≥2.391 MiB
#12 Time Exceeded ≥2100ms ≥9.391 MiB
#13 Time Exceeded ≥2001ms ≥9.289 MiB
#14 Time Exceeded ≥2100ms ≥18.129 MiB
#15 Time Exceeded ≥2099ms ≥2.633 MiB
#16 Time Exceeded ≥2000ms ≥1.074 MiB
#17 Time Exceeded ≥2000ms ≥1.078 MiB
#18 Time Exceeded ≥2100ms ≥2.781 MiB
#19 Time Exceeded ≥2100ms ≥1.637 MiB
#20 Time Exceeded ≥2100ms ≥1.727 MiB

Code

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

#define FAST ios_base::sync_with_stdio(false);cin.tie(NULL);
using ll = long long;
using P = pair<int,int>;

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

  for (ti = 1; ti <= tc; ++ti) {
    int n, k, i, j, d, dd, g;
    cin >> n >> k;

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

    priority_queue<P, vector<P>, greater<P>> pq;
    vector<int> dis(n, INT_MAX);
    dis[0] = 0;
    pq.emplace(0, 0);

    while (!pq.empty()) {
      tie(d, i) = pq.top(); pq.pop();
      if (dis[i] != d) continue;

      if (i < n-1) {
        dd = d+k;
        j = i+1;
        if (dis[j] > dd) {
          dis[j] = dd;
          pq.emplace(dd, j);
        }
      }

      for (j = i+1; j < n; ++j) {
        g = gcd(a[i], a[j]);
        dd = d + a[i]/g;
        if (dis[j] > dd) {
          dis[j] = dd;
          pq.emplace(dd, j);
        }
      }
    }

    cout << dis[n-1] << "\n";
  }

  return 0;
}

Information

Submit By
Type
Submission
Problem
P1099 Which way to go
Contest
Brain Booster #6
Language
C++17 (G++ 13.2.0)
Submit At
2024-10-03 17:43:49
Judged At
2024-10-03 17:43:49
Judged By
Score
15
Total Time
≥2101ms
Peak Memory
≥18.129 MiB