제출 #1211137

#제출 시각아이디문제언어결과실행 시간메모리
1211137Muhammet메기 농장 (IOI22_fish)C++20
0 / 100
1002 ms2162688 KiB
#include "bits/stdc++.h"
#include "fish.h"
// #include "grader.cpp"

using namespace std;

#define ll long long

ll max_weights(int n, int m, vector<int> x, vector<int> y, vector<int> w) {
    vector <vector <ll>> a(n+2, vector <ll> (n+2, 0));
    vector <vector <vector <ll>>> dp(n+2, vector <vector <ll>> (n+2, vector <ll> (2, 0)));
    for(int i = 0; i < m; i++) {
        a[x[i] + 1][y[i] + 1] = w[i];
    }

    for(int i = 1; i <= n; i++) {
        for(int j = 1; j <= n; j++) {
            a[i][j] += (!j ? 0 : a[i][j-1]);
        }
    }

    vector <ll> b(n+1, 0);

    ll ans = 0;

    for(int i = 1; i <= n; i++) {
        for(int j = 0; j <= n; j++) {
            for(int j1 = 0; j1 <= n; j1++) {
                // dp[i][j] = max(dp[i][j], a[i+1][j] + dp[i-1][j1] - a[i][j1] + a[i-1][j] - a[i-1][j1]);
                if(j1 <= j) dp[i][j][0] = max(dp[i][j][0], dp[i-1][j1][0] + a[i-1][j] - a[i-1][j1]);
                if(j1 >= j) dp[i][j][1] = max(dp[i][j][1], dp[i-1][j1][1] + a[i][j1] - a[i][j]);
            }
            dp[i][j][1] = max(dp[i][j][1], dp[i][j][0]);
            ans = max(ans, dp[i][j][1] + a[i+1][j]);
        }
    }
    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...