Submission

Status:

[PPPPTSSSSSSSS]

Subtask/Task Score:

{0/100}

Score: 0

User: theem1502

Problemset: ซื้อขายหุ้นซีเค

Language: cpp

Time: 1.097 second

Submitted On: 2026-02-21 21:21:23

#include <bits/stdc++.h>
using namespace std;
    int num;
int recursion(int currentx, vector<int> &thearray, vector<int> &dp) {
     if (currentx == num) {
        return 0;
     }

     if (dp[currentx] != -1) {
        return dp[currentx];
     }
    int maxval = 0;
    int anotherval = recursion(currentx + 1, thearray, dp);

     for (int i = currentx + 1; i <= num; i++) {
            if (thearray[i] <= thearray[currentx]) {
                continue;
            }

            if (i == num) {
                continue;
            }
            int val = 0;
            if (i < num) {
        val = recursion(i, thearray, dp) + thearray[i] - thearray[currentx];
            }
            else {
                val = recursion(i, thearray, dp);
            }
        if (val > maxval) {maxval = val;}
     }
     return dp[currentx] =  max(maxval, anotherval);



}



int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cin >> num;
    vector<int> thearray(num);
    for (int i = 0; i < num; i++) {
        cin >> thearray[i];
    }
    int maxdp = 0;

    vector<int> dp(num+1, -1);
    cout << recursion(0, thearray, dp);



}