[编程题-搜狐]发奖金

[编程题] 发奖金
 狐进行了一次黑客马拉松大赛,全公司一共分为了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;
}
原文地址:https://www.cnblogs.com/learning-c/p/5745788.html