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; }