老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。相邻的孩子中,评分高的孩子必须获得更多的糖果。那么这样下来,老师至少需要准备多少颗糖果呢?
第一行一个 n,表示孩子数。(1≤n≤100) 接下来一行,输入n个孩子的评分。(0≤si≤10)
糖果数
3
1 0 2
5
解释: 你可以分别给这三个孩子分发 2、1、2 颗糖果。
1<=n<=100 1<=孩子的分数<=10
#include <bits/stdc++.h>
using namespace std;
const int N=1E6+5;
int n,sum;
int a[N],vis[N];
int main(){
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
vis[i]++;
}
for(int i=1;i<=n;i++)
if(a[i]<a[i+1])
vis[i+1]++;
else
vis[i]++;
for(int i=n;i<=1;i++)
if(a[i]<a[i+1])
if(a[i+2]>=a[i+1])
a[i+2]++;
else if(a[i+2]<=a[i+1])
vis[i+1]++;
else
vis[i]++;
for(int i=1;i<=n;i++)
sum+=vis[i];
for(int i=n;i<=1;i++)
sum+=vis[i];
cout<<sum;
return 0;
}