csp小中大为什么我是九十分

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
#define max_n 10000000
int num[max_n + 5] = {0};
int main() {
    int n;
    cin >> n;
    for(int i = 1; i <= n; i++) {
        cin >> num[i];
    }
    sort(num + 1, num + 1 + n);
    if(n & 1) {
            cout << num[n] << " " << num[(n + 1) / 2] << " " << num[1];

    }else{
        cout << num[n] << " " << ((double)num[n / 2] + (double)num[n / 2 + 1]) / 2 <<" " << num[1];
    }
} 

为什么一直是九十分a

图片说明
图片说明

这是ccf三月份的题吧 有点印象 考虑全了应该没啥问题

#define max_n 10000000
int num[max_n + 5] = {0};
这个根据什么定义的,如果我输入n > 10000005,怎么办?

你可以试一试
4
1 10000000 10000000 10000000
会发现输出变成了1e7,太大的话double输出会变成科学计数法,如果用的是cout的话
用printf没有这个问题