#include<iostream>
using namespace std;
int main()
{
int n,m;//n棵苹果树,m为本行后面的整数个数
int num,op;
int t=0,d=0,e=0;//t为最后一轮剩下的苹果总数,d为发生掉落的苹果树的个数,e为连续三棵树发生掉落的组数
int tree[1009]= {0};
cin>>n;
for(int i=0; i<n; i++)//n棵苹果树
{
cin>>m;//m为本行后面的整数个数
cin>>num;//num为当前树上的苹果个数
while(--m)
{
cin>>op;
if(op<=0)//疏果
num+=op;
else//重新统计该棵树上的苹果个数
{
if(op<num)
{
num=op;
tree[i]=1;//标记这棵树上有苹果掉落
}
}
}
t+=num;
}
for(int i=0; i<n; i++)
{
d+=tree[i];//d为发生掉落的苹果树的个数
if(tree[i]==1 && tree[(i+1)%n]==1 && tree[(i+2)%n]==1)//e为连续三棵树发生掉落的组数
e++;
}
cout<<t<<" "<<d<<" "<<e;
}
注意while(m–)会提示运行超时!!!
while(n–):先判断n是不是0。如果n不为0,n减1,执行循环体。n的变化过程:n-1~0
while(–n):n先减1,再判断n是不是0。如果n不为0,执行循环体。n的变化过程:n-1~1