题目来自:CSP认证 201909-2 小明种苹果(续)
代码如下:
#include<iostream>
#include<stdio.h>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
int a[1005],cnt=0,n,m,c[1005],b,sum=0,ct=0;//a[]储存每棵树最后剩下的苹果数目,c[]储存该树是否掉果
memset(a,0,sizeof(a));
memset(c,0,sizeof(c));//数组初始化
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&m);
scanf("%d",&a[i]);
int flag=1;
for(int j=1;j<m;j++){
scanf("%d",&b);
if(b<=0) a[i]+=b;//小于0,表示人为疏果
else{//大于0
if(b!=a[i]){
a[i]=b;//新统计的比原来的少,表示掉果
if(flag){
cnt++;
c[i]=1;//标记该树掉果
flag=0;//只标记一次
}
}
}
}
}
for(int i=0;i<n;i++) {
sum+=a[i];
if(i==0){
if(c[0] && c[1] && c[n-1])
ct++;
}
else{
if(i!=n-1){
if(c[i-1] && c[i] && c[i+1])
ct++;
}
else{
if(c[0] && c[n-2] && c[n-1])
ct++;
}
}
}
printf("%d %d %d",sum,cnt,ct);
return 0;
}