Pagini recente » Cod sursa (job #2389416) | Cod sursa (job #1333936) | Cod sursa (job #1575341) | Cod sursa (job #1364824) | Cod sursa (job #40618)
Cod sursa(job #40618)
#include <stdio.h>
#include <iostream>
using namespace std;
int sir[100001];
int din[100001];
int maxm;
int n;
int main()
{
int i,j;
freopen("oo.in","r",stdin);
freopen("oo.out","w",stdout);
scanf("%d\n", &n);
for ( i = 1; i <= n; i++ )
scanf("%d ", &sir[i] );
// Iau a zeroa pereche
din[0] = sir[n] + sir[i];
for ( i = 3; i < n-2; i++ )
{
din[i] = sir[i]+sir[i+1];
for ( j = 3; j <= 5; j++ )
if ( i-j >= 0 )
din[i] = max( din[i], sir[i]+sir[i+1] + din[i-j] );
if ( din[i] > maxm ) maxm = din[i];
}
// Iau prima pereche
din[1] = sir[1] + sir[2];
for ( i = 4; i < n-1; i++ )
{
din[i] = sir[i]+sir[i+1];
for ( j = 3; j <= 5; j++ )
if ( i - j > 0 )
din[i] = max( din[i], sir[i]+sir[i+1]+din[i-j] );
if ( din[i] > maxm ) maxm = din[i];
}
// Iau a2a pereche
din[1] = 0;
din[2] = sir[2] + sir[3];
for ( i = 5; i < n; i++ )
{
din[i] = sir[i]+sir[i+1];
for ( j = 3; j <= 5; j++ )
if ( i - j > 0 )
din[i] = max( din[i], sir[i]+sir[i+1]+din[i-j] );
if ( din[i] > maxm ) maxm = din[i];
}
// Iau a3a pereche
din[1] = din[2] = 0;
din[3] = sir[3]+sir[4];
for ( i = 6; i <= n; i++ )
{
din[i] = sir[i]+sir[i+1];
if ( i == n ) din[i] = sir[i] + sir[1];
for ( j = 3; j <= 5; j++ )
if ( i - j > 0 )
din[i] = max( din[i], sir[i]+sir[i+1]+din[i-j] );
if ( din[i] > maxm ) maxm = din[i];
}
printf("%d\n", maxm );
fclose(stdin);
fclose(stdout);
return 0;
}