CCCPaste

Untitled

#include 
#include 
using namespace std;
typedef long long ll;
int arr[100005][3];
ll dp[51][51][51];
ll kolacinja(int W, int B, int R, int i) {
    if(i == -1) {
        return 0;
    }
    if(dp[W][B][R] != -1) {
        return dp[W][B][R];
    }
    ll result = 0;
    if(W > 0) {
        result = max(result, kolacinja(W - 1, B, R, i - 1) + arr[i][0]);
    }
    if(B > 0) {
        result = max(result, kolacinja(W, B - 1, R, i - 1) + arr[i][1]);
    }
    if(R > 0) {
        result = max(result, kolacinja(W, B, R - 1, i - 1) + arr[i][2]);
    }
    return dp[W][B][R] = result;
}
int main()
{
    int w, b, r, n;
    cin >> w >> b >> r >> n;
    for(int i = 0; i < n; i++) {
        cin >> arr[i][0] >> arr[i][1] >> arr[i][2];
    }
    for(int i = 0; i < 51; i++) {
        for(int j = 0; j < 51; j++) {
            for(int k = 0; k < 51; k++) {
                dp[i][j][k] = -1;
            }
        }
    }
    if(n <= 50) {
        cout << kolacinja(w, b, r, n - 1) << endl;
    }
    return 0;
}