#include<iostream>
using namespace std;
int main(){
int n;
int total = 0; //最后剩下的总的苹果数
int succession = 0; // 连续三棵苹果树均掉落苹果的组数
int drop_tree = 0; // 统计掉落苹果的苹果树个数
cin >> n;
int drop_flag[n]; // 第i棵树是否掉落苹果
int apple[n]; // 第i棵苹果树还剩多少苹果
int** arr = new int*[n];
int temp;
for(int i = 0; i < n; i++){
drop_flag[i] = 0;
cin >> temp;
arr[i] = new int[temp+1];
arr[i][0] = temp;
for(int j = 1; j < temp + 1; j++){
cin >> arr[i][j];
}
}
// 遍历二维数组,修改状态位
for(int i = 0; i < n; i++){
apple[i] = arr[i][1];
for(int j = 2; j < arr[i][0] + 1; j++){
int now = arr[i][j];
if(now > 0&&apple[i] > now){
apple[i] = now;
drop_flag[i] = 1;
}else if(now < 0){
apple[i] += now;
}
}
}
int pre = 0, next = 0;
for(int i = 0; i < n; i++){
pre = (i - 1 + n) % n;
next = (i + 1 + n) % n;
if(drop_flag[i] == 1) drop_tree += 1;
if(drop_flag[pre] == 1 && drop_flag[i] == 1 && drop_flag[next] == 1) succession += 1;
total += apple[i];
}
cout<< total << " "<< drop_tree << " " << succession;
return 0;
}
小明种苹果(续)C++
猜你喜欢
转载自blog.csdn.net/qq_38969094/article/details/103965526
今日推荐
周排行