제출 #1157817

#제출 시각아이디문제언어결과실행 시간메모리
1157817InvMOD메기 농장 (IOI22_fish)C++20
0 / 100
960 ms2162688 KiB
#include<bits/stdc++.h>

#include "fish.h"

using namespace std;

#define fi first
#define se second

//#define int long long
#define sz(v) (int)(v).size()
#define all(v) (v).begin(), (v).end()

using ll = long long;


ll max_weights(int n, int m, vector<int> X, vector<int> Y, vector<int> W){

    vector<vector<ll>> w(n + 1, vector<ll>(n + 1));

    for(int i = 0; i < m; i++){
        X[i] = X[i] + 1;
        Y[i] = Y[i] + 1;
        w[X[i]][Y[i]] = W[i];
    }

    vector<vector<ll>> dp(n + 1, vector<ll>(n + 1, 0));
    for(int i = 1; i <= n; i++){
        for(int j = 0; j <= n; j++){
            dp[i][0] = max(dp[i][0], dp[i - 1][j]);
        }

        ll sum = 0;
        for(int j = 1; j <= n; j++){
            sum += w[i - 1][j];
            int sub = 0;
            for(int p = 0; p < j; p++){
                sub += w[i - 1][p];

                dp[i][j] = max(dp[i][j], dp[i - 1][p] + (sum - sub));
            }
        }
    }

    vector<vector<ll>> dp2(n + 1, vector<ll>(n + 1, 0));
    for(int i = n - 1; i >= 1; i--){
        for(int j = 0; j <= n; j++){
            dp2[i][0] = max(dp2[i][0], dp2[i + 1][j]);
        }

        ll sum = 0;
        for(int j = 1; j <= n; j++){
            sum += w[i + 1][j];
            int sub = 0;
            for(int p = 0; p < j; p++){
                sub += w[i + 1][p];

                dp2[i][j] = max(dp2[i][j], dp2[i + 1][p] + (sum - sub));
            }
        }
    }

    ll answer = 0;
    for(int i = 1; i <= n; i++){
        for(int j = 0; j <= n; j++){
            answer = max(answer, dp[i][j] + dp2[i][j]);
        }
    }
    return answer;
}
#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...