Cod sursa(job #1075764)

Utilizator mazaandreiAndrei Mazareanu mazaandrei Data 9 ianuarie 2014 15:47:00
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<fstream>
using namespace std;
int a[100001],b[100001],n,sol;
ifstream in("oo.in"); ofstream out("oo.out");
void f(int p, int u){
    for(int i=0;i<=p;++i) b[i]=0;
    b[p]=a[p]+a[p-1];
    for(int i=p+1;i<=u;++i)
        b[i]=max(b[i-3]+a[i]+a[i-1],b[i-1]); //i-3+x[i]+x[i-1] inseamna ca culegem, d[i-1] inseamna ca stam cuminti
    if(sol<b[u]) sol=b[u];
}
int main(){
    in>>n;
    for(int i=1;i<=n;++i)in>>a[i];
    a[n+1]=a[1];
    f(2,n-1); //primele 2 casute, cea de-a n-1-a devine incuiata
    f(3,n);   //casuta 2 si 3, 1 si 4 blocate
    f(4,n+1); //casuta 3 si 4 start, n si n+1 (1) o sa fie incercate si ele
    out<<sol<<'\n';
}