Raslboyy

1906

Sep 29th, 2019
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.74 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <vector>
  4. #include <algorithm>
  5.  
  6. using namespace std;
  7.  
  8. int main() {
  9.     ifstream fin("input.txt");
  10.     ofstream fout("output.txt");
  11.  
  12.     int len, n;
  13.     fin >> len >> n;
  14.     vector<int> vec(n + 2);
  15.     vec[0] = 0; for (int i = 1; i <= n; i++) fin >> vec[i]; vec[++n] = len;
  16.     vector<vector<int>> dp(n + 1, vector<int>(n+1, 1e9));
  17.     for (int i = 0; i <= n; i++) dp[i][i] = dp[i][i+1 <= n ? i + 1 : i] = 0;
  18.     for (int l = 2; l <= n; l++) {
  19.         for (int beg = 0; beg + l <= n; beg++) {
  20.             for (int k = 1; k < l; k++) {
  21.                 dp[beg][beg + l] = min(dp[beg][beg + l], dp[beg][beg + k] + dp[beg + k][beg + l] + vec[beg + l] - vec[beg]);
  22.             }
  23.         }
  24.     }
  25.     fout << dp[0][n] << endl;
  26.  
  27.     fin.close();
  28.     fout.close();
  29.     return 0;
  30. }
Advertisement
Add Comment
Please, Sign In to add comment