Con respecto al problema de que xx.5 no se puede transportar, puede ser causado por el compilador Puede agregar 0.000005 después del valor de salida.
avg = (g1+g2) / 2 + 0.00005;
#include <cstdio>
#include <algorithm>
using namespace std;
int main(){
int n, m;
scanf("%d %d", &n, &m);
for(int i=0; i<n; i++){
double g2 = 0;
int num = 0;
double arr[n];
for(int j=0; j<n; j++){
int g;
scanf("%d", &g);
if(j == 0){
g2 = g*1.0;
}else{
if(g>=0 && g<=m){
arr[num++] = g*1.0;
}
}
}
sort(arr, arr+num);
double avg = 0;
for(int i=1; i<num-1; i++){
avg += arr[i];
}
double g1 = avg / (num-2);
avg = (g1+g2) / 2 + 0.00005;
printf("%.0f\n", avg);
}
return 0;
}