Cod sursa(job #3244074)

Utilizator Commander_XDunel Stefan-Octavian Commander_X Data 23 septembrie 2024 13:27:18
Problema Oo Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
//https://www.infoarena.ro/problema/oo
#include <fstream>
#include <vector>

std::ifstream fin("oo.in");
std::ofstream fout("oo.out");

using namespace std;

vector<int> dp, v;

int max(int a, int b)
{
	return a > b ? a : b;
}
int main()
{
	int n, maxim = 0;
	fin >> n;
	v.resize(n + 1);
	dp.resize(n + 1, 0);
	for (int i = 1; i <= n; ++i)
		fin >> v[i];

	dp[2] = 0;
	dp[3] = v[3] + v[2];
	dp[4] = v[4] + v[3];
	for (int i = 7; i <= n; ++i)
	{
		dp[i] = max(max(dp[i - 3], dp[i - 4]), dp[i - 5]) + v[i] + v[i - 1];
		maxim = max(maxim, dp[i]);
	}
	dp.clear();
	dp.resize(n + 1, 0);
	dp[2] = v[2] + v[1];
	dp[3] = v[3] + v[2];
	for (int i = 6; i < n; ++i)
	{
		dp[i] = max(max(dp[i - 3], dp[i - 4]), dp[i - 5]) + v[i] + v[i - 1];
		maxim = max(maxim, dp[i]);
	}
	dp[1] = v[1] + v[n];
	dp[2] = v[2] + v[1];
	for (int i = 5; i < n - 1; ++i)
	{
		dp[i] = max(max(dp[i - 3], dp[i - 4]), dp[i - 5]) + v[i] + v[i - 1];
		maxim = max(maxim, dp[i]);
	}
	fout << maxim << '\n';
}