2019级《DS&A课程实践》----算法训练第二套题
CCF201909-2 小明种苹果(续)(100分)【序列处理】
用了STL中queue队列的知识点,挺简单的
源码
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<queue>
using namespace std;
#pragma warning(disable:4996)
int main()
{
int N;
scanf("%d", &N);
int count = 0;
int SUM = 0;
queue<int> q;
bool b[1000] = {0};
int group = 0;
int A = 1;
while (A<=N) {
int n;
scanf("%d", &n);
int sum;
scanf("%d", &sum);
int a;
int flag = 0;
for (int i = 0; i < n - 1; i++) {
scanf("%d", &a);
if (a <= 0) {
sum += a;
}
else {
if (sum != a) {
sum = a;
if (flag == 0) {
count++;
flag = 1;
b[A] = 1;
q.push(A);
}
}
}
}
SUM += sum;
if (flag == 1) {
if (q.size() == 3) {
group++;
q.pop();
}
}
else {
while (q.size()) {
q.pop();
}
}
A++;
}
if (b[N - 1] == 1 && b[N] == 1 && b[1] == 1)group++;
if (b[N] == 1 && b[1] == 1 && b[2] == 1)group++;
printf("%d %d %d", SUM, count, group);
return 0;
}