代碼:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <climits>
#include <cstring>
#include <string>
#include <algorithm>
#include <vector>
#include <deque>
#include <list>
#include <utility>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <bitset>
#include <iterator>
using namespace std;
typedef long long ll;
const int inf = 0x3f3f3f3f;
const ll INF = 0x3f3f3f3f3f3f3f3f;
const double PI = acos(-1.0);
const double E = exp(1.0);
const int MOD = 1e9+7;
const int MAX = 1e5+5;
int n,m;
int a[MAX];
int tag[MAX];// 標記蘋果樹有是否掉落的情況
int main()
{
/*
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
*/
while(cin >> n)
{
memset(tag,0,sizeof(tag));
int T = 0;// 最後n顆蘋果樹的 總蘋果數
int D = 0;// 發生蘋果掉落情況的數的個數
int E = 0;// 連續三棵樹都發生 蘋果掉落的組數
int Num;
for(int i = 1; i <= n; i++)
{
cin >> m;
cin >> Num;
bool flag = false;
int tmp;
for(int j = 1; j <= m-1; j++)
{
cin >> tmp;
if(tmp <= 0)
{
Num -= abs(tmp);
}
else
{
if(Num != tmp)
{
flag = true;
tag[i] = 1;
}
Num = tmp;
}
}
T += Num;
if(flag)
{
D++;
}
}
for(int i = 1; i <= n-1; i++)
{
if(tag[i] && tag[i+1] && tag[i+2])
{
E++;
}
}
if(tag[n-1] && tag[n] && tag[1])
{
E++;
}
if(tag[n] && tag[1] && tag[2])
{
E++;
}
cout << T << " " << D << " " << E << endl;
}
return 0;
}