Pagini recente » Cod sursa (job #1800703) | Cod sursa (job #2421904)
#include <stdio.h>
#include <stdlib.h>
#define Nmax 100001
using namespace std;
int v[Nmax];
int d1[Nmax];
int d2[Nmax];
int max(int a, int b, int c){
if(b>a)
a=b;
if(c>a)
a=c;
return a;
}
/// a o o o - |X X|
int main()
{
FILE *fin, *fout;
fin=fopen("oo.in","r");
fout=fopen("oo.out","w");
int n,i;
fscanf(fin,"%d",&n);
fscanf(fin,"%d",&v[1]);
fscanf(fin,"%d",&v[2]);
d1[2]=v[1]+v[2];
for(i=3;i<5 && i<=n;i++){
fscanf(fin,"%d",&v[i]);
d1[i]=d2[i]=v[i]+v[i-1];
}
if(i<=n){
fscanf(fin,"%d",&v[i]);
d1[i] = v[i]+v[i-1] + max( d1[i-3], d1[i-4], d1[i-5] );
d2[i] = v[i]+v[i-1];
i++;
for(i;i<n-1;i++){
fscanf(fin,"%d",&v[i]);
d1[i]= v[i]+v[i-1] + max( d1[i-3], d1[i-4], d1[i-5] );
d2[i]= v[i]+v[i-1] + max( d2[i-3], d2[i-4], d2[i-5] );
}
if(i<=n){
fscanf(fin,"%d",&v[i]);
d2[i] = v[i]+v[i-1] + max( d2[i-3], d2[i-4], d2[i-5] );
}
}
int sol1, sol2;
sol1 = sol2 = 0;
sol1 = max( d1[n-1], d1[n-2], d1[n-3] );
sol2 = max( d2[n-1], d2[n-2], d2[n-3] );
sol1 = max( sol1, sol2, 0 );
fprintf(fout,"%d",sol1);
fclose(fin);
fclose(fout);
return 0;
}