Pagini recente » Cod sursa (job #184083) | Cod sursa (job #2260514) | Cod sursa (job #1366147) | Cod sursa (job #2155398) | Cod sursa (job #1075764)
#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';
}