Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- typedef vector<int> vi;
- #define X first
- #define Y second
- #define mk make_pair
- #define inb push_back
- #define y1 ggggggggggggg
- int solve();
- int main()
- {
- solve();
- return 0;
- }
- const int BUFSZ = (int)1e6 + 7;
- char buf[BUFSZ];
- string get_str()
- {
- scanf(" %s", buf);
- return string(buf);
- }
- const double INF = (double)1e9 + 7;
- int solve()
- {
- int n;
- scanf("%d", &n);
- vi t(n);
- for (int i = 0; i < n; ++i)
- {
- scanf("%d", &t[i]);
- }
- vector<vi> f(n, vi(n));
- for (int l = 0; l < n; ++l)
- {
- f[l][l] = 140;
- for (int r = l + 1; r < n; ++r)
- {
- f[l][r] = 140 + max(t[r] - t[l] - 1800, (r - l) * 20);
- //printf("%d %d : %d\n", l + 1, r + 1, f[l][r]);
- }
- }
- vector<vi> dp(n, vi(n + 1, INF));
- vi mindp(n, INF);
- for (int i = 0; i < n; ++i)
- {
- dp[i][i + 1] = f[0][i];
- for (int j = 1; j <= i; ++j)
- {
- dp[i][j] = mindp[i - j] + f[i - j + 1][i];
- }
- for (int j = 0; j < (int)dp[i].size(); ++j)
- mindp[i] = min(mindp[i], dp[i][j]);
- }
- printf("%d\n", mindp[n - 1]);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement