Pagini recente » Clasament dupa rating | Monitorul de evaluare | Profil pusneivictor | Diferente pentru utilizator/sandupetrasco intre reviziile 11 si 12 | Cod sursa (job #797029)
Cod sursa(job #797029)
#include<stdio.h>
#define dim 100010
int i,n,max,V[dim],D[dim];
FILE*f=fopen("oo.in","r");
FILE*g=fopen("oo.out","w");
int maxim(int a,int b){
if(a>b)
return a;
return b;
}
int main(){
fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
fscanf(f,"%d",&V[i]);
D[1]=D[2]=D[3]=D[n]=V[1]+V[2];
max=D[1];
for(i=4;i<=n-3;i++){
D[i]=maxim(D[i-1],V[i]+V[i+1]+D[i-4]);
if(D[i]>max)
max=D[i];
}
D[1]=D[2]=D[n]=D[n-1]=V[1]+V[n];
for(i=3;i<=n-4;i++){
if(i==3)
D[i]=maxim(D[i-1],V[i]+V[i+1]);
else
D[i]=maxim(D[i-1],V[i]+V[i+1]+D[i-4]);
if(D[i]>max)
max=D[i];
}
D[1]=D[n]=D[n-1]=D[n-2]=V[n]+V[n-1];
for(i=2;i<=n-5;i++){
if(i<4)
D[i]=maxim(D[i-1],V[i]+V[i+1]);
else
D[i]=maxim(D[i-1],V[i]+V[i+1]+D[i-4]);
if(D[i]>max)
max=D[i];
}
if(n==3)
max=maxim(V[1]+V[2],V[2]+V[3]);
if(n==2)
max=V[1]+V[2];
fprintf(g,"%d",max);
return 0;
}