Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int n, q, i, j, s, t;
- cin >> n >> q >> s >> t;
- vector <vector <int> > dp(q, vector <int>(n + 1, inf));
- vector <int> p(q);
- for (i = 0; i < q; i++) {
- cin >> p[i];
- }
- dp[0][s] = abs(t - p[0]);
- dp[0][t] = abs(s - p[0]);
- for (i = 0; i < q - 1; i++) {
- int mn = inf;
- for (j = 1; j <= n; j++) {
- mn = min(mn, dp[i][j] + abs(p[i + 1] - j));
- }
- dp[i + 1][p[i]] = mn;
- for (j = 1; j <= n; j++) {
- if (j != p[i]) {
- dp[i + 1][j] = dp[i][j] + abs(p[i + 1] - p[i]);
- }
- }
- }
- cout << *min_element(all(dp[q - 1])) << endl;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement