F - 郭鑫的难题(三)

F - 郭鑫的难题(三)
Description
郭鑫是一名幼儿园老师。

她想给她班上的孩子们一些糖果。所有的孩子都排成一排,每个孩子都根据其在课堂上的表现得到评分。

她想给每个孩子至少1个糖果。如果两个孩子坐在一起,那么评分较高的孩子必须得到更多的糖果。郭鑫希望尽量减少她必须购买的糖果总数。

例如,假设她的学生的评分为[4,6,4,5,6,2]。她给学生糖果的数量如下:[ 1,2,1,2,3,1 ]。她必须购买至少10个糖果。

现在请你帮助她计算出最少需要的糖果数。

Input
第一行输出一个数 n,代表孩子的数目。

接下来有 n 行,每一行有一个整数 a[i], 代表处在第 i 位置上的孩子的评分。

1 <= n <= 100000 1 <= a[i] <= 100000

Output
输出一个数代表郭鑫最小需要的糖果数。

Sample
Input
3
1
2
2
Output
4

代码

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n,i,a[100003],b[100003],s=0;
    scanf("%d",&n);
    for(i=0;i<n;i++)
        a[i]=1;
    scanf("%d",&b[0]);
    for(i=1; i<n; i++)
    {
        scanf("%d",&b[i]);
        if(b[i]>b[i-1])
            a[i]=a[i-1]+1;
    }
    for(i=n-1; i>=1; i--)
    {
        if(b[i]<b[i-1]&&a[i]>=a[i-1])
            a[i-1]=a[i]+1;
    }
    for(i=0;i<n;i++)
    {
        s+=a[i];
    }
    printf("%d",s);
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值