Submission #1263890

#TimeUsernameProblemLanguageResultExecution timeMemory
1263890nicolo_010메기 농장 (IOI22_fish)C++20
0 / 100
1018 ms2162688 KiB
#include "fish.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define cout if(0) cout 
const int mxN = 300;

ll dp[mxN+1][mxN+1];

long long max_weights(int N, int M, std::vector<int> X, std::vector<int> Y, std::vector<int> W) {
    vector<vector<ll>> prefix(N, vector<ll>(N, 0));
    // prefix[i][j] = suma de todos los catfish de la columna i hasta fila j
    for (int i=0; i<M; i++) {
        prefix[X[i]][Y[i]]+=W[i];
    }
    for (int i=0; i<N; i++) {
        for (int j=1; j<N; j++) {
            prefix[i][j] += prefix[i][j-1];
        }
    }
    for (int i=0; i<=N; i++)  {
        dp[0][i] = 0;
    }
    vector<vector<ll>> mx(10, vector<ll>(10, 0));
    for (int i=1; i<N; i++) {
        for (int j=0; j<=N; j++) {
            ll sum = 0;
            if (i == N-1 && j>0) {
                sum = prefix[i][j-1];
            }
            dp[i][0] = max(dp[i][0], dp[i-1][j] + sum);
        }
        for (int j=1; j<=N; j++) {
            ll mx=0;
            if (i == 1) {
                mx = prefix[0][j-1];
            }
            else {
                for (int k=0; k <= N; k++) {
                    int mn = min(j, k);
                    ll sum = (mn > 0 ? prefix[i-1][mn-1] : 0);
                    mx = max(mx, dp[i-2][k]+sum);
                }
            }
            ll case2 = 0;
            for (int k=0; k<=N; k++) {
                case2 = max(case2, dp[i-1][k]);
            }
            dp[i][j] = max({
                dp[i][j], mx, case2
            });
        }
    }
    ll ans = 0;
    for (int i=0; i<=N; i++) {
        ans = max(dp[N-1][i], ans);
    }
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...