Advertisement
skimono

for DB

Jun 4th, 2023
994
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.65 KB | None | 0 0
  1.     int n, q, i, j, s, t;
  2.     cin >> n >> q >> s >> t;
  3.     vector <vector <int> > dp(q, vector <int>(n + 1, inf));
  4.     vector <int> p(q);
  5.     for (i = 0; i < q; i++) {
  6.         cin >> p[i];
  7.     }
  8.     dp[0][s] = abs(t - p[0]);
  9.     dp[0][t] = abs(s - p[0]);
  10.     for (i = 0; i < q - 1; i++) {
  11.         int mn = inf;
  12.         for (j = 1; j <= n; j++) {
  13.             mn = min(mn, dp[i][j] + abs(p[i + 1] - j));
  14.         }
  15.         dp[i + 1][p[i]] = mn;
  16.         for (j = 1; j <= n; j++) {
  17.             if (j != p[i]) {
  18.                 dp[i + 1][j] = dp[i][j] + abs(p[i + 1] - p[i]);
  19.             }
  20.         }
  21.     }
  22.     cout << *min_element(all(dp[q - 1])) << endl;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement