Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <vector>
- #include <algorithm>
- using namespace std;
- int main() {
- ifstream fin("input.txt");
- ofstream fout("output.txt");
- int len, n;
- fin >> len >> n;
- vector<int> vec(n + 2);
- vec[0] = 0; for (int i = 1; i <= n; i++) fin >> vec[i]; vec[++n] = len;
- vector<vector<int>> dp(n + 1, vector<int>(n+1, 1e9));
- for (int i = 0; i <= n; i++) dp[i][i] = dp[i][i+1 <= n ? i + 1 : i] = 0;
- for (int l = 2; l <= n; l++) {
- for (int beg = 0; beg + l <= n; beg++) {
- for (int k = 1; k < l; k++) {
- dp[beg][beg + l] = min(dp[beg][beg + l], dp[beg][beg + k] + dp[beg + k][beg + l] + vec[beg + l] - vec[beg]);
- }
- }
- }
- fout << dp[0][n] << endl;
- fin.close();
- fout.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment