csp认证的小明种苹果续

csp不能通过只有20分 求解问题


```c++
#include<iostream>
#include<cstring>
using namespace std;

long long int arr[1001][1001];

int main(){
    
    //n为一共的苹果树,m为对第n棵数进行记录的数据 
    int n,m;
    //t为剩下的苹果总数,d为掉落的苹果树的数目,
    //e为连续三棵树掉落苹果的情况 
    int t=0,d=0,e=0;
    
    cin>>n;
    
    for(int i=0;i<n;i++){
        cin>>m;
        for(int j=0;j<m;j++){
            cin>>arr[i][j];
        }
    }
    //统计总数
    int sum[n];
    memset(sum,0,sizeof(sum)); 
    for(int i=0;i<n;i++){
        sum[i]=arr[i][0];
        for(int j=1;j<m;j++){
            
            if(arr[i][j]<=0){
                sum[i]+=arr[i][j];
            }
            else if(arr[i][j]>0){
                sum[i]=arr[i][j];
            }
        }
    }
    
    for(int i=0;i<n;i++){
        t+=sum[i];
    }
    

    
    //掉落苹果的苹果树
    int k[n];
    memset(k,0,sizeof(k));
    for(int i=0;i<n;i++){
            
        for(int j=1;j<m;j++){
            if(arr[i][j]<=0){
                arr[i][0]+=arr[i][j];    
            }
            if(arr[i][j]>0){
                if(arr[i][j]!=arr[i][0]){
                    k[i]=1;
                }
            }
        }
    } 
    
    for(int i=0;i<n;i++){
        if(k[i]==1){
            d++;
        }
    }
    
    //连续三棵树发生掉落情况
    for(int i=1;i<n-1;i++){
        if(k[i]==k[i-1]&&k[i-1]==k[i+1]&&k[i]==1)
        {
            e++;
        }
    }
    
    if(k[0]==1&&k[n-2]==1&&k[n-1]==1){
    e++;
    }
    
    if(k[0]==1&&k[1]==1&&k[n-1]==1){
        e++;
    }
    
    cout<<t<<" "<<d<<" "<<e<<endl;
}

    

```