# 14255: 【原4255】A and B Problem

### 题目描述

author: Guo Linsong 原OJ链接：https://acm.sjtu.edu.cn/OnlineJudge-old/problem/4255

## Description

There is an integer sequence $$A$$ of length $$N$$ whose values are unknown.

Given is an integer sequence $$B$$ of length $$N - 1$$ which is known to satisfy the following:

$$B_i \geq max(A_i,A_{i+1})$$

Find the maximum possible sum of the elements of $$A$$.

All values in input are integers.

$$2 \leq N \leq 100$$

$$0 \leq B_i \leq 10^5$$

## Input Format

Input is given from Standard Input in the following format:

$$N$$

$$B_1~B_2\ldots B_{N-1}$$

## Output Format

Print the maximum possible sum of the elements of $$A$$.

3

2 5

9

6

0 153 10 10 23

53

## ligongzzz's solution

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);

int n;
cin >> n;
vector<int> vdata(n - 1);

for (int i = 0; i < n - 1; ++i)
cin >> vdata[i];

int ans = vdata[0] + vdata[n - 2];
for (int i = 0; i < n - 2; ++i)
ans += min(vdata[i], vdata[i + 1]);

cout << ans;

return 0;
}


## zqy2018's solution

#include <bits/stdc++.h>
#define INF 2000000000
using namespace std;
typedef long long ll;
int f = 1, x = 0;
char c = getchar();
while(c < '0' || c > '9'){if(c == '-') f = -f; c = getchar();}
while(c >= '0' && c <= '9')x = x * 10 + c - '0', c = getchar();
return f * x;
}
int n, b[105], a[105];
void init(){
for (int i = 1; i < n; ++i)
a[1] = a[2] = b[1];
}
void solve(){
for (int i = 2; i < n; ++i){
a[i + 1] = b[i];
if (b[i] < b[i - 1])
a[i] = b[i];
}
int ans = 0;
for (int i = 1; i <= n; ++i)
ans += a[i];
printf("%d\n", ans);
}
int main(){
init();
solve();
return 0;
}