求解各位巨佬,种树问题

有一块边长为n的正方形田地,每边上种着n棵树,正方形内部的二条对角线上也着种着n棵树,对角线与正方形的另二边组成了红色虚形部分(如图),如蝴蝶形状。在这形状的边线的树,都是三年前志愿者种下的。虽然是同一时间种下,但是树的高矮却长得不一样。现在,同学们很想知道,三年志愿者种下的树的平均高度达到多少?高度一样的树最多有几棵?
img
http://61.186.173.89:2019/2020/11/23/57ac951cbf9fc.png
我解决了第一个问题,第二个实在想不出来了,代码:

#include <bits/stdc++.h>
using namespace std;
int main(){
    int n,k,count=0,a[105][105],c[103],maxn=-1543;
    double ans;
    cin>>n;
    k=n; 
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            cin>>a[i][j];
            ans+=a[i][j];
            if(((j!=1&&j!=n)&&(i==1||i==n))||a[i][j]==0){
                ans-=a[i][j];
                k--;
            }
        }
    }