解题思路:
注意读题,每次大于0时都需要统计,统计的数目一定要看清楚。注意n<3的情况。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<vector>
using namespace std;
int treedown[10005];
int main(){
int n;
cin>>n;
int sum=0;//掉了苹果的棵树;
int con=0;//连续的总数
int sum_apple=0;//苹果总数
for(int i=0;i<n;i++){
int m;
int now=0;//当前单个树的苹果数
bool flag=false;
cin>>m;
for(int j=0;j<m;j++){
int tmp;
cin>>tmp;
if(tmp>0){
if(tmp<now&&flag==false){//还要分开讨论,
flag=true;
sum++;
treedown[i]=1;
}
now=tmp;//每次统计都需要重新赋值;
}
else if(tmp<0){
now+=tmp;
}
}
sum_apple+=now;
}
if(n>=3)//大于等于3棵树的时候才可以。
for(int i=0;i<n;i++){
if(i==n-2&&treedown[n-2]&&treedown[n-1]&&treedown[0]){
con++;
}
else if(i==n-1&&treedown[n-1]&&treedown[0]&&treedown[1]){
con++;
}
else if(treedown[i]&&treedown[i+1]&&treedown[i+2]){
con++;
}
}
else{
sum=0;
}
cout<<sum_apple<<" "<<sum<<" "<<con<<endl;
return 0;
}
/*
4
4 74 -7 -12 -5
5 73 -8 -6 59 -4
5 76 -5 -10 60 -2
5 80 -6 -15 59 0
5
4 10 0 9 0
4 10 -2 7 0
2 10 0
4 10 -3 5 0
4 10 -1 8 0
1
2 10 9
1
2 10 -10
*/