-1. 小明种苹果
/*
3 3
73 -8 -6 -4
76 -5 -10 -8
80 -6 -15 0
2 2
10 -3 -1
15 -4 0
*/
#include<iostream>
#include<math.h>
using namespace std;
int n,m;
int main(){
cin>>n>>m;
int t=0;
int k=0;
int p=0;
int a[n][m+1];
for(int i=0;i<n;i++){
for(int j=0;j<=m;j++){
cin>>a[i][j];
if(j==0) t+=a[i][j];
}
}
for(int i=0;i<n;i++){
int tmp = 0;
for(int j=1;j<=m;j++){
t+=a[i][j];
tmp+=abs(a[i][j]);
}
if(p<tmp){
p=tmp;
k = i;
}
}
cout<<t<<" "<<k+1<<" "<<p;;
return 0;
}
- 2.小明种苹果(续)
/*
4
4 74 -7 -12 -5
5 73 -8 -6 59 -4
5 76 -5 -10 60 -2
5 80 -6 -15 59 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
*/
#include<iostream>
#include<vector>
#include<cstring>
using namespace std;
int n;//苹果的棵树
int t=0;//全部疏果操作后的苹果总数
int d=0;//发生苹果掉落的苹果树的棵树
int e=0;//相邻连续三棵树发生苹果掉落情况的组数
int main(){
cin>>n;
vector<int> v[n];
int tmp[n];
memset(tmp,0,sizeof(tmp));
int reverse[n];
memset(reverse,0,sizeof(reverse));
int flag[n];//标记是否掉落
memset(flag,0,sizeof(flag));
//输入
for(int i=0;i<n;i++){
int x;
cin>>x;
for(int j=0;j<x;j++){
int y;
cin>>y;
v[i].push_back(y);
}
tmp[i]+=v[i][0];
}
for(int i=0;i<n;i++){
for(int j=1;j<v[i].size();j++){
if(v[i][j]<0) {
tmp[i]+=v[i][j];
}else {
continue;
}
}
}
for(int i=0;i<n;i++){
for(int j=v[i].size()-1;j>=0;j--){
if(v[i][j]<=0) {
reverse[i]+=v[i][j];
}else{
reverse[i]+=v[i][j];
break;
}
}
}
for(int i=0;i<n;i++){
t+=reverse[i];
if(reverse[i]!=tmp[i]) {
d++;flag[i]=1;
}
}
for(int i=0;i<n;i++){
if(flag[(i+n-1)%n]==1&&flag[i]==1&&flag[(i+1)%n]==1){
e++;
}
}
cout<<t<<" "<<d<<" "<<e;
return 0;
}