Cod sursa(job #1325757)
| Utilizator | Data | 24 ianuarie 2015 12:38:34 | |
|---|---|---|---|
| Problema | Oo | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.6 kb |
#include <iostream>
#include <fstream>
#define nmax 100005
using namespace std;
ifstream f ("oo.in");
ofstream g ("oo.out");
int n,sol;
int v[nmax];
int a[nmax];
void trying(int start, int sfarsit) {
a[start]=0;
a[start+1]=v[start]+v[start+1];
for (int i=start+2;i<=sfarsit;i++)
a[i]=max(a[i-3] + v[i-1] + v[i], a[i - 1]);
sol = max(a[sfarsit], sol);
}
int main() {
f>>n;
for (int i=1;i<=n;i++) f>>v[i];
v[n+1] =v[1];
trying(1, n - 1);
trying(2, n);
trying(3, n + 1);
g<<sol<<'\n';
return 0;
}
