#include #include #include #include #include #include #define MAX_N 100000 using namespace std; int SP(int partenza, int max); int N,B; vector p; int main(){ FILE *in; in = fopen("input.txt", "r"); assert(in); int B, j; int fsf = fscanf(in, "%d %d", &N, &B); fsf++; vector p; for(int i = 0; i < N; i++){ fsf = fscanf(in, "%d", &j); p.push_back(j); } fclose(in); int res; res = SP(0,0); FILE* output; output = fopen("output.txt", "w"); fprintf(output, "%d", res); fclose(output); return 0; } int SP(int partenza, int max){ int acc, rif; acc = 0; rif = 0; if(partenza < N){ if(p[partenza] > max){ acc = p[partenza] + SP(partenza +1, p[partenza]); rif = SP(partenza+1, max); } else { rif = SP(partenza+1, max); } } if(acc > B) acc = 0; if(rif > B) rif = 0; return (acc>rif)?acc:rif; }