B4359 [GESP202506 三级] 分糖果
题目描述
有 nnn 位小朋友排成一队等待老师分糖果。第 iii 位小朋友想要至少 aia_iai 颗糖果,并且分给他的糖果数量必须比分给前一位小朋友的糖果数量更多,不然他就会不开心。
老师想知道至少需要准备多少颗糖果才能让所有小朋友都开心。你能帮帮老师吗?
输入格式
第一行,一个正整数 nnn,表示小朋友的人数。
第二行,nnn 个正整数 a1,a2,…,ana_1, a_2, \ldots, a_na1,a2,…,an,依次表示每位小朋友至少需要的糖果数量。
输出格式
输出一行,一个整数,表示最少需要准备的糖果数量。
输入输出样例 #1
输入 #1
4
1 4 3 3
输出 #1
16
输入输出样例 #2
输入 #2
15
314 15926 53589793 238462643 383279502 8 8 4 1 9 7 1 6 9 3
输出 #2
4508143253
说明/提示
对于所有测试点,保证 1≤n≤10001 \leq n \leq 10001≤n≤1000,1≤ai≤1091 \leq a_i \leq 10^91≤ai≤109。
解析
模拟,保证满足当前需求且比前边的多,详见代码:
注意:数据范围,ans要用long long
#include<bits/stdc++.h>
using namespace std;
int n;
int a[1005];
long long ans=0;
int main() {
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
a[i]=max(a[i],a[i-1]+1);
ans+=a[i];
}
cout<<ans<<endl;
return 0;
}