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