纪念一下被此道题给坑了,count那里不能直接在if(sum[i]>a[i][j])里面进行++,不能会重复,所以要立个flag
#include <iostream>
#include <cstdio>
using namespace std;
int a[10000][10000],b[10000],sum[10000];
int main()
{
// freopen("data.txt","r",stdin);
int n,m;
int leaf=0,count=0,check=0,flag=0;
cin>>n;
for(int i=1;i<=n;i++){
flag=0;
cin>>m;
for(int j=1;j<=m;j++){
cin>>a[i][j];
if(a[i][j]>0)
{
if(sum[i]>a[i][j]){
flag=1;
b[i]++;
}
sum[i]=a[i][j];
}
else{
sum[i]+=a[i][j];
}
}
if(flag==1)
count++;
if(i>2&&b[i]>0){
if(b[i-1]>0&&b[i-2]>0)
check++;
}
if((i==n)&&b[i]>0){
if(b[1]>0&&b[2]>0)
check++;
if(b[i-1]>0&&b[1]>0)
check++;
}
leaf+=sum[i];
}
cout<<leaf<<" "<<count<<" "<<check;
return 0;
}