狐進行了一次黑客馬拉松大賽,全公司一共分爲了N個組,每組一個房間排成一排開始比賽,比賽結束後沒有公佈成績,可是每一個組可以看到本身相鄰的兩個組裏比本身成績低的組的成績,比賽結束以後要發獎金,以1w爲單位,每一個組都至少會發1w的獎金,另外,若是一個組發現本身的獎金沒有高於比本身成績低的組發的獎金,就會不滿意,做爲比賽的組織方,根據成績計算出至少須要發多少獎金才能讓全部的組滿意。
每組數據先輸入N,而後N行輸入N個正整數,每一個數表示每一個組的比賽成績。
輸出至少須要多少w的獎金
10 20 32 12 32 45 11 21 31 41 33
20
#include<iostream> #include<vector> #include<algorithm> using namespace std; int main() { int n; while (cin >> n) { vector<int> v(n); vector<int> w(n); for (int i = 0; i<n; i++) cin >> v[i]; for (int i = 0; i<n; i++) { int w1 = 1; for (int j = i - 1; j >= 0; j--) { if (v[j]<v[j + 1]) w1++; else break; } int w2 = 1; for (int j = i + 1; j<n; j++) { if (v[j - 1]>v[j]) w2++; else break; } w[i] = max(w1, w2); } int sum = 0; for (int i = 0; i < n; i++) sum += w[i]; cout << sum << endl; } return 0; }