Cod sursa(job #2849212)

Utilizator MrPuzzleDespa Fabian Stefan MrPuzzle Data 14 februarie 2022 18:31:09
Problema Oo Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb

#include <fsteam>

using namespace std;

ifstream f("oo.in");
ofstream g("oo.out");

int n, a[100003], dp1[100003], dp2[100003], dp3[100003];
///dp1[i] - numarul maxim de oua colectate pana la pozitia i pornind cu sectoarele 1,2
///dp2[i] - numarul maxim de oua colectate pana la pozitia i pornind cu sectoarele 2,3
///dp3[i] - numarul maxim de oua colectate pana la pozitia i pornind cu sectoarele n, 1

int main()
{
	int i;
	fin >> n;
	for (i = 1; i <= n; i++)
		f >> a[i];
	dp1[2] = dp1[3] = a[1] + a[2];
	dp2[3] = a[2] + a[3];
	dp3[1] = a[n] + a[1];
	for (i = 4; i <= n; i++)
	{
		if (i < n - 1) dp3[i] = max(dp3[i - 1], dp3[i - 3] + a[i] + a[i - 1]);
		if (i < n) dp1[i] = max(dp1[i - 1], dp1[i - 3] + a[i] + a[i - 1]);
		dp2[i] = max(dp2[i - 1], dp2[i - 3] + a[i] + a[i - 1]);
	}
	g << max({ dp2[n], dp1[n - 1], dp3[n - 2] }) << "\n";
}