题目链接:http://codeforces.com/contest/1005/problem/A
题意是有n个数,这n个数里有好多个从1开始的依次加1的递增的数列,问有多少个这样的递增的数列,并输出每个数列所递增的最大值...
思路就是暴力模拟,因为其中1的个数就是里面递增序列的个数,所以我们只需要统计1的个数和标记1的位置,然后遍历将1前面的那个数输出就好了。
AC代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <map>
using namespace std;
map<int,int> ma;
int pre[1005];
int n;
int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&pre[i]);
if(pre[i] == 1){
ma[i] = 1;
}
}
printf("%d\n",ma.size());
for(int i=1;i<n;i++){
if(ma[i])printf("%d ",pre[i-1]);
}
printf("%d\n",pre[n-1]);
return 0;
}