RT
题目描述 Description
***爬上多层建筑物内的楼梯。***每次爬楼梯时,都会开始从1到该楼梯的步数进行计数。 他大声说每个数字。 例如,如果她爬两个楼梯,其中第一个楼梯包含3个台阶,而第二个楼梯包含4个台阶,则他会念出1,2,3,1,2,3,4的数字。
给出了***发音的所有数字。 她爬了几段楼梯? 另外,输出每个楼梯的步数。
给定的序列将是***在攀登一个或多个楼梯时可能已经发出的有效序列。
输入描述 Input Description
输入2行
第一行输入一个正整数n (1<=n<=1000)***发音的总数
第二行包含整数a1,a2,a3,…,an (1<=ai<=1000)
表示***在爬楼梯时发音的所有数字,从第一个到最后一个发音的顺序。 每经过x步的楼梯,她将按该顺序念出数字1,2,…,x。
给定的序列将是***在爬一个或多个楼梯时可能已经发出的有效序列
输出描述 Output Description
输出2行
在第一行中,输出***爬上的楼梯数。 在第二行中,输出他所爬的每个楼梯的步数。 按正确的楼梯顺序写下数字。
样例输入 Sample Input
样例输入1:
7
1 2 3 1 2 3 4
样例输入2:
5
1 2 3 4 5
样例输出 Sample Output
样例输出1:
2
3 4
样例输出2:
1
5
数据范围及提示 Data Size & Hint
题意:每走一个台阶就会报数,每走新的一层就再从1开始报,给出报的顺序,求一共走了几层,每层有多少个台阶
***是人名,大家不用管他()
我的代码:
#include<iostream>
#include<cstdio>
using namespace std;
int n;
int a[1005],cnt,cntsz[1005],xb=1,sum;
int main() {
cin >> n;
if (n == 0) {
int a;
cin >> a;
cout << "0\n0";
return 0;
}
for (int i = 1; i <= n; i++) {
cin >> a[i];
if (a[i] < a[i - 1]) {
cntsz[xb++] = cnt;
cnt = 0;
sum++;
}
cnt++;
}
sum++;
cntsz[xb] = cnt;
cout << sum << endl;
for (int i = 1; i <= xb; i++) {
cout << cntsz[i] << ' ';
}
return 0;
}