Cod sursa(job #2044214)

Utilizator Cristi_ChiraChira Cristian Cristi_Chira Data 21 octombrie 2017 01:15:12
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <iostream>
#include <fstream>
#define dm 100005
using namespace std;
ifstream fin("oo.in");
ofstream fout("oo.out");
int v[dm], dp[dm];
int maxx=-1;
void dinamicadubioasa(int x, int y)
{
    dp[x] = v[x] + v[x + 1];
    dp[x + 1] = max(dp[x], v[x + 1] + v[x + 2]);
    dp[x + 2] = max(dp[x + 1], v[x + 2] + v[x + 3]);
    for(int i = x + 3; i < y ; i++)
        dp[i]=max(dp[i-1], dp[i-3]+v[i]+v[i+1]);
    if(dp[y-1] > maxx)
        maxx=dp[y-1];
}
int main()
{
    int n;
    fin >> n;
    for(int i = 1; i <= n; i++)
        fin >> v[i];
        v[0] = v[n];
    dinamicadubioasa(1, n-1);
    dinamicadubioasa(2, n);
    dinamicadubioasa(0, n-2);
    fout << maxx;
    return 0;
}