Submission #1369882

#TimeUsernameProblemLanguageResultExecution timeMemory
1369882retr0foxxCatfish Farm (IOI22_fish)C++20
9 / 100
13 ms4916 KiB
#include "fish.h"

#include <iostream>
#include <vector>
#include <algorithm>

#define int long long
#define MAXN 300000

int N, M;
std::vector<signed> X, Y, W;

int dp[MAXN+5];
int dpm[MAXN+5];
int WA[MAXN+5];

long long max_weights(signed _N, signed _M, std::vector<signed> _X, std::vector<signed> _Y,
                      std::vector<signed> _W) {

	N = _N; M = _M;
	X = std::move(_X);
	Y = std::move(_Y);
	W = std::move(_W);
	
	for (int i = 0; i < M; ++i)
		WA[X[i]] = W[i];
	
	dp[0] = N > 1 ? WA[1] : 0;
	dpm[0] = dp[0];
	for (int i = 1; i < N; ++i)
	{
		int nxv = (i+1 < N ? WA[i+1] : 0);
		dp[i] = std::max({
			WA[i-1], // alone
			dp[i-1] - WA[i],
			i-2 < 0 ? 0 : (dp[i-2]), // WA[i-1] contributed by.. dp[i-2]
			i-3 < 0 ? 0 : (dpm[i-3] + WA[i-1])
		}) + nxv;
		dpm[i] = std::max(dpm[i-1], dp[i]);
		
		//printf("dp[%i] = %i, dpm=%i\n", i, dp[i], dpm[i]);
	}
	return dpm[N-1];
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...