/* VR370108 MonoKnap */ #include #include #include #include using namespace std; int maxSum(vector vec, int budg); int N; int main(){ FILE *in; in = fopen("input.txt", "r"); assert(in); int B, j; int fsf = fscanf(in, "%d %d", &N, &B); fsf++; vector v; for(int i = 0; i < N; i++){ fsf = fscanf(in, "%d", &j); v.push_back(j); } int result = maxSum(v, B); FILE *output; output = fopen("output.txt", "w"); fprintf(output, "%d\n", result); fclose(output); return 0; } int maxSum(vector vec, int budg){ vector soluz(N, 0); int max = 0; for(int i = 0; i < N; i++){ soluz[i] = vec[i]; } for(int i = 1; i < N; i++){ for(int j = 0; j < i; j++){ if((vec[i] >= vec[j]) && (soluz[i] < soluz[j]+vec[i]) && (soluz[j] + vec[i] <= budg)){ soluz[i] = soluz[j]+vec[i]; } } } for(int i = 0; i < N; i++){ if(max < soluz[i]) max = soluz[i]; } return max; }