Submission #724664

#TimeUsernameProblemLanguageResultExecution timeMemory
724664BT21tataCatfish Farm (IOI22_fish)C++17
0 / 100
1076 ms121200 KiB
#include "fish.h"
typedef long long ll;
#include <bits/stdc++.h>
using namespace std;

ll dp[3005][3005][2], sum[3005][3005];

long long max_weights(int n, int m, vector<int> X, vector<int> Y, vector<int> W)
{
    for(int i=0; i<m; i++)
        sum[X[i]][Y[i]]=W[i];
    for(int i=0; i<n; i++)
        for(int j=1; j<n; j++)
            sum[i][j]+=sum[i][j-1];


    for(int i=1; i<n; i++)
    {
        for(int j=0; j<n; j++)
        {
            for(int l=j; l<n; l++)
            {
                dp[i][j][0]=max(dp[i][j][0], max(dp[i-1][l][0], dp[i-1][l][1])+(sum[i][l]-sum[i][j-1]));
                if(i-2>=0) dp[i][j][1]=max(dp[i][j][1], max(dp[i-2][l][0], dp[i-2][l][1])+sum[i-1][l]);
            }
            for(int l=0; l<j; l++)
            {
                dp[i][j][1]=max(dp[i][j][1], dp[i-1][l][1]+(sum[i-1][j]-sum[i-1][l-1]));
                if(i-2>=0) dp[i][j][1]=max(dp[i][j][1], max(dp[i-2][l][0], dp[i-2][l][1])+sum[i-1][j]);
            }
               
        }
    }

    ll ans=0;
    for(int i=0; i<n; i++)
        ans=max({ans, dp[n-1][i][0], dp[n-1][i][1]});
    return ans;
}
/*
5 4
0 2 5
1 1 2
4 4 1
3 3 3 


*/
#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...