Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include<iomanip>
- double* arr;
- double** dp;
- int n;
- double min(double a,double b);
- double getMinLen();
- int main(int argc, const char * argv[]) {
- std::ifstream fin("in.txt");
- std::ofstream fout("out.txt");
- double lenght;
- fin>>n;
- arr=new double[n];
- for(int i=0;i<n;i++){
- fin>>arr[i];
- }
- lenght=getMinLen();
- fout<<std::fixed;
- fout<<std::setprecision(2)<<lenght<<"\n";
- return 0;
- }
- double min(double a,double b){
- return a<b ? a : b;
- }
- double getMinLen(){
- dp=new double*[n];
- for(int i=0;i<n;i++){
- dp[i]=new double[2];
- }
- for (int i = 0; i < n; i++) {
- dp[i][0] = INT_MAX;
- dp[i][1] = INT_MAX;
- }
- dp[1][0] = 0;
- dp[1][1] = arr[1]-arr[0];
- for (int i = 1; i < n - 1; i++) {
- dp[i][0] = dp[i - 1][1];
- long double left = arr[i+1] - arr[i];
- dp[i + 1][1] = min(dp[i][0], dp[i][1]) + left;
- }
- return dp[n - 1][1];
- }
Advertisement
Add Comment
Please, Sign In to add comment