Pagini recente » Istoria paginii runda/oni18_d2 | Autentificare | Cod sursa (job #2870566) | Cod sursa (job #1731921) | Cod sursa (job #3182062)
#include <fstream>
#include <climits>
using namespace std;
ifstream fin("oo.in");
ofstream fout("oo.out");
const int nmax = 100005;
int n, a[nmax], dp[nmax], maxi;
void clean()
{
for(int i = 1; i <= n; i ++)
dp[i] = 0;
}
int main()
{
fin >> n;
for(int i = 1; i <= n; i ++)
fin >> a[i];
/// luam 1 si n
dp[1] = dp[2] = dp[3] = a[1] + a[n];
for(int i = 4; i <= n - 2; i ++)
dp[i] = max(a[i] + a[i - 1] + dp[i - 3], dp[i - 1]);
maxi = max(maxi, dp[n - 2]);
clean();
/// luam 1 si 2
dp[1] = dp[2] = dp[3] = dp[4] = a[1] + a[2];
for(int i = 5; i <= n - 1; i ++)
dp[i] = max(a[i] + a[i - 1] + dp[i - 3], dp[i - 1]);
maxi = max(maxi, dp[n - 1]);
clean();
/// nu luam 1
for(int i = 3; i <= n; i ++)
dp[i] = max(a[i] + a[i - 1] + dp[i - 3], dp[i - 1]);
fout << max(maxi, dp[n]);
return 0;
}