#include #include #include #include #include using namespace std; #define MAX_N 10000 #define ERROR -1 int N; int val[MAX_N]; int diff[MAX_N]; //int mem[MAX_N][MAX_N]; // solve(i,j) = min( diff[i]+solve(i+2,j-1), solve(i+1,j) ) int solve(int i, int j){ if( j==0 ) return 0; if( i>=N-1 && j==0 ) return 0; if( i>=N-1 && j!=0 ) return ERROR; int prendi = solve(i+2,j-1); int lascia = solve(i+1,j); if( prendi==ERROR ) return lascia; if( lascia==ERROR ) return prendi+diff[i]; return min( prendi+diff[i], lascia ); } int main(int argc, char **argv){ ifstream in("input.txt"); in >> N; for(int i=0;i> val[i]; in.close(); // Inizializzo /*for(int i=0;i