Cod sursa(job #1330298)
| Utilizator | Data | 30 ianuarie 2015 15:57:38 | |
|---|---|---|---|
| Problema | Oo | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.65 kb |
#include <fstream>
#include <cstring>
using namespace std;
const int MAX_N = 100005;
ifstream fin ("oo.in");
ofstream fout ("oo.out");
int N, A[MAX_N], Sol;
int main()
{
fin >> N;
for(int i = 1; i <= N; ++i)
fin >> A[i];
A[N+1] = A[1], A[N+2] = A[2];
for(int k = 0; k < 3; ++k)
{
int bst[MAX_N];
memset(bst, 0, sizeof bst);
for(int i = k+1; i <= N+k; ++i)
{
bst[i] = max(bst[i-1], bst[i-2]);
if(i != k+1)
bst[i] = max(bst[i], bst[i-3] + A[i] + A[i-1]);
}
Sol = max(Sol, bst[N+k-1]);
}
fout << Sol;
}
