小明种苹果(续)
第二题在第一题的基础上,加上了苹果自动掉落的情况。采用一个bool型数组记录即可。
#include<iostream>
#include<vector>
using namespace std;
int main()
{
long long N = 0;
long long D = 0, E = 0;
cin>>N;
vector<bool> isAutoDown;
long long total = 0;
long long Count = 0, thisTreeNum = 0, opera = 0;
long long operaNum = 0;
for(int i = 0; i < N; i++) {
cin>>Count;
operaNum = 0;
for(int j = 0; j < Count; j++) {
if(j == 0) {
cin>>thisTreeNum;
isAutoDown.push_back(false);
}
else {
cin>>opera;
if(opera <= 0) {
operaNum += opera;
}
else {
if(thisTreeNum + operaNum != opera) {
isAutoDown[i] = true;
}
thisTreeNum = opera;
operaNum = 0;
}
}
}
thisTreeNum += operaNum;
total += thisTreeNum;
}
for(int i = 0; i < N; i++) {
if(isAutoDown[i]) {
D++;
}
}
for(int i = 0; i < N; i++) {
if(isAutoDown[i] == true) {
if(i == 0) {
if(isAutoDown[1] == true && isAutoDown[N-1] == true) {
E++;
}
}
else if(i == N - 1) {
if(isAutoDown[0] == true && isAutoDown[N - 2] == true) {
E++;
}
}
else {
if(isAutoDown[i - 1] == true && isAutoDown[i + 1] == true) {
E++;
}
}
}
}
cout<<total<<" "<<D<<" "<<E<<endl;
return 0;
}