제출 #1234688

#제출 시각아이디문제언어결과실행 시간메모리
1234688Muhammad_Aneeq메기 농장 (IOI22_fish)C++17
35 / 100
81 ms6728 KiB
#include "fish.h"
#include <vector>
#include <iostream>
using namespace std;
int const N=310;
long long dp[N][N][2]={};
long long gr[N][N]={},pre[N][N]={}; // 0 if we are updating it from behind 1 if being updated from
long long sol(int n)
{
    for (int i=1;i<=n;i++)
        for (int j=0;j<n;j++)
            pre[i][j+1]=pre[i][j]+gr[i][j];
    for (int i=1;i<=n;i++)
        dp[0][i][0]=dp[0][i][1]=-1e17;
    long long mx=0;
    for (int i=1;i<=n;i++)
    {
        for (int j=0;j<=n;j++)
        {
            for (int k=0;k<=n;k++)
            {
                if (j<k)
                {
                    dp[i][j][0]=max(dp[i][j][0],dp[i-1][k][0]+pre[i][k]-pre[i][j]);
                    dp[i][k][1]=max(dp[i][k][1],dp[i-1][k][0]+pre[i][k]-pre[i][j]);
                }
                else
                {
                    dp[i][j][0]=max(dp[i][j][0],dp[i-1][k][1]+pre[i-1][j]-pre[i-1][k]);
                    dp[i][j][1]=max(dp[i][j][1],dp[i-1][k][1]+pre[i-1][j]-pre[i-1][k]);
                }
                dp[i][j][1]=max(dp[i][j][1],dp[i-1][j][0]+pre[i][j]);
                mx=max(mx,max(dp[i][j][1],dp[i][j][0]));
            }
        }
    }
    return mx;
}
long long max_weights(int N, int M, vector<int> X, vector<int> Y,vector<int> W) 
{
    for (int i=0;i<M;i++)
        gr[X[i]+1][Y[i]]=W[i];
    return sol(N);
}
#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...