제출 #1289921

#제출 시각아이디문제언어결과실행 시간메모리
1289921MMihalev메기 농장 (IOI22_fish)C++20
9 / 100
26 ms10044 KiB
#include<iostream>
#include<algorithm>
#include<vector>
#include "fish.h"
using namespace std;
const int MAX_N=1e5+5;
int n,m;
vector<int>x,y,w;
vector<pair<int,long long>>cells[MAX_N];//rows,weight
long long dp[MAX_N];
long long max_weights(int N, int M, std::vector<int> X, std::vector<int> Y,std::vector<int> W)
{
    n=N;
    m=M;
    x=X;
    y=Y;
    w=W;

    for(int i=0;i<m;i++)
    {
        cells[x[i]].push_back({y[i],w[i]});
    }
    for(int i=0;i<n;i++)
    {
        sort(cells[i].begin(),cells[i].end());
    }

    long long ans=0;

    for(int i=1;i<n;i++)
    {
        dp[i]=max((cells[i-1].size()>0 ? cells[i-1][0].second : 0),dp[i-1]);
        if(i-2>=0)
        {
            dp[i]=max(dp[i],dp[i-2]+(cells[i-1].size()>0 ? cells[i-1][0].second : 0));
        }
        if(i-3>=0)
        {
            dp[i]=max(dp[i],dp[i-3]+(cells[i-1].size()>0 ? cells[i-1][0].second : 0)+
                                    (cells[i-2].size()>0 ? cells[i-2][0].second : 0));
        }
    }

    ans=dp[n-1];
    ans=max(ans,dp[n-2]+(cells[n-1].size()>0 ? cells[n-1][0].second : 0));
    if(n>=3)ans=max(ans,dp[n-3]+(cells[n-2].size()>0 ? cells[n-2][0].second : 0));

    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...