题目描述
n 位同学(编号从1 到n)同时来到体育馆报名签到,领取准考证和参赛资料。为了有序报名,这n 位同学需要按编号次序(编号为1 的同学站在最前面)从前往后排成一条直线。然而每一位同学都不喜欢拥挤,对于第i 位同学,如果有另外一位同学距离他(她)的距离小于a[i],那么就会发生冲突。小可可想知道如果要不发生任何冲突的情况下,这n 位同学排队的队列最短长度是多少。
输入格式输入有两行:
第一行一个整数n,表示报名签到的同学人数。第二行有n 个整数,第i 个整数a[i]表示第i 个同学必须与其他同学保持的距离。
输出格式输出一行,包括一个整数,表示这n 位同学排队队列的最小长度。
注意:n 位同学要按1~n 的次序从前往后排队。
样例输入 #1
3
3 1 2
输出 #1
5
数据范围与提示
对于100%的数据满足:1≤n≤100000,1≤a[i]≤100000。
分类标签[数组应用]
C++题解代码
#include <bits/stdc++.h>
using namespace std;
int b;
int c;
int a[100001];
// The main procedure
int main() {
cin>>b;
for (int i = 1; i <= b; i++) {
cin>>a[i];
}
c = 0;
for (int i = 2; i <= b; i++) {
if (a[(i-1)] > a[i]) {
c += a[(i-1)];
} else {
c += a[i];
}
}
cout<<c;
return 0;
}
Blockly题解代码图片