#include<bits/stdc++.h>
#include<iostream>
using namespace std;
int all[1004][1004];
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
int m;
cin>>all[i][0];
m=all[i][0]; //第一次统计时,树上的果子
for(int j=1;j<=m;j++)
{
cin>>all[i][j];
}
}
/*
for(int i=0;i<n;i++)
{
cout<<"I:"<<all[i][0]<<endl;
for(int j=1;j<=all[i][0];j++)
{
cout<<"all:"<<all[i][j]<<endl;
}
}
//输入检测
*/
int T=0,D=0,E=0,F=0;
for(int i=0;i<n;i++)
{
int m;
m=all[i][0];
all[i][m+1]=0; //储存后面数字的个数
for(int j=m;j>0;j--) //j--写成j++过,爆炸循环
{
if(all[i][j]<=0)
{
all[i][m+1]+=all[i][j];
// cout<<"all:"<<all[i][m+1]<<endl;//运算检测
}
else
{
all[i][m+1]+=all[i][j];
// cout<<all[i][m+1]<<endl; //运算检测
T+=all[i][m+1];
break;
}
}
}
//未考虑一棵树三次或多次统计
for(int i=0;i<n;i++)
{
int m;
m=all[i][0];
all[i][m+2]=all[i][1]; // 储存第一次统计的个数
all[i][m+3]=0; // 储存是否落果的判定(1/0)
for(int j=2;j<=m;j++)
{
if(all[i][j]<=0)
{
all[i][m+2]+=all[i][j];
}
else
{
if(all[i][m+2]>all[i][j])
{
// cout<<"ALL:"<<all[i][m+2]<<endl;
D++;
F++;
break;
}
}
}
if(F==1)
all[i][m+3]=1;
// cout<<all[i][m+3]<<endl;
F=0;
}
int s_ind, t_ind;
for(int i=0;i<n;i++)
{
int m;
m=all[i][0];
s_ind = (i + 1) % n;
t_ind = (i + 2) % n;
if(all[i][m+3]==1 && all[s_ind][m+3]==1 && all[t_ind][m+3]==1) // 相邻
E++;
}
cout<<T<<" "<<D<<" "<<E<<endl;
return 0;
}
/*
4
4 74 -7 -12 -5
5 73 -8 -6 59 -4
5 76 -5 -10 60 -2
5 80 -6 -15 59 0
222 1 0
5
4 10 0 9 0
4 10 -2 7 0
2 10 0
4 10 -3 5 0
4 10 -1 8 0
39 4 2
*/
哦豁