CROC-MBTU 2012, Final Round (Online version, Div. 2) A - Paper Work

题目:http://codeforces.com/contest/250/problem/A

将数列分割城若干个数列,每个子数列的负元素不得超过两个,使子数列个数最少,输出子数列个数,和每个子数列元素个数。

思路:贪心法

#include <iostream>

using namespace std;

int a[100];
int b[100];
int bi=0;
int bn=1;
int main()
{
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin >> a[i];
	}
	int neg=0;
	for(int i=0;i<n;i++)
	{
		bi++;
		if(a[i]<0) 
		{
			neg++;
			if(neg>2)
			{
				b[bn]=bi-1;
				bn++;
				bi=1;
				neg=1;
			}
		}

	}
	if(bi!=0) b[bn]=bi;
	cout<<bn<<endl;
	for(int i=1;i<=bn;i++)
	{
		cout<<b[i]<<" ";
	}
	return 0;
}

  

posted @ 2013-01-19 21:43  Daniel Qiu  阅读(145)  评论(0编辑  收藏  举报