Pagini recente » Cod sursa (job #608119) | Cod sursa (job #312690) | Cod sursa (job #800286) | Cod sursa (job #2136596) | Cod sursa (job #1908513)
#include<cstdio>
#include<algorithm>
#include<cstring>
#define DIM 100005
using namespace std;
FILE * fin = fopen("oo.in","r");
FILE * fout = fopen("oo.out","w");
int D[DIM], v[DIM], n, sol;
int main(){
fscanf( fin, "%d", &n );
for( int i = 1; i <= n; i++ ){
fscanf( fin, "%d", &v[i] );
}
//iau mereu oua din sectorul i si i+1
//cazul I : nu am de gand sa iau oua din sectorul n - 1
D[1] = v[1] + v[2];
D[2] = max( D[1], v[2] + v[3] );
for( int i = 3; i <= n - 2; i++ ){
D[i] = max( D[i - 1], D[i - 3] + v[i] + v[i + 1] );
}
sol = max( sol, D[n - 2] );
//cazul II iau oua din n - 1 deci nu mai pot lua din 1
memset( D, 0, sizeof(D) );
D[2] = v[2] + v[3];
for( int i = 3; i <= n - 1; i++ ){
D[i] = max( D[i - 1], D[i - 3] + v[i] + v[i + 1] );
}
sol = max( sol, D[n - 1] );
//cazul III iau oua din sectorul n deci nu pot sa mai iau din 2
memset( D, 0, sizeof(D) );
v[n + 1] = v[1];
for( int i = 3; i <= n; i++ ){
D[i] = max( D[i - 1], D[i - 3] + v[i] + v[i + 1] );
}
sol = max( sol, D[n] );
//afisare solutie
fprintf( fout, "%d\n", sol );
return 0;
}