Pagini recente » Cod sursa (job #1041755) | Cod sursa (job #1276326)
#include<fstream>
using namespace std;
int n, i, a, b, c, maxim;
int v[100001], w1[100001], w2[100001], w3[100001];
ifstream fin("oo.in");
ofstream fout("oo.out");
int main(){
fin>> n;
for(i = 1; i <= n; i++){
fin>> v[i];
}
w1[2] = v[1] + v[2];
if(w1[2] < v[2] + v[3]){
w1[3] = v[2] + v[3];
}
else{
w1[3] = w1[2];
}
for(i = 4; i < n; i++){
if(w1[i-1] < w1[i-3] + v[i-1] +v[i]){
w1[i] = w1[i-3] + v[i-1] + v[i];
}
else{
w1[i] = w1[i-1];
}
}
a = w1[n-1];
w2[3] = v[2] + v[3];
if(w2[3] < v[3] + v[4]){
w2[4] = v[3] + v[4];
}
else{
w2[4] = w2[3];
}
for(i = 5; i <= n; i++){
if(w1[i-1] < w1[i-3] + v[i-1] +v[i]){
w1[i] = w1[i-3] + v[i-1] + v[i];
}
else{
w1[i] = w1[i-1];
}
}
b = w2[n];
w3[1]= v[n] + v[1];
if(w3[1] < v[1] + v[2]){
w3[2] = v[1] + v[2];
}
else{
w3[2] = w3[1];
}
for(i = 3; i < n - 1; i++){
if(w1[i-1] < w1[i-3] + v[i-1] +v[i]){
w1[i] = w1[i-3] + v[i-1] + v[i];
}
else{
w1[i] = w1[i-1];
}
}
c = w3[n-2];
maxim = a;
if(b > maxim){
maxim = b;
}
if(c > maxim){
maxim = c;
}
fout<< maxim;
return 0;
}