题目链接: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;
}