运行输入数据后报错,如何解决

一个警告:
警告 C6385 从“a”中读取的数据无效: 可读大小为“4”个字节,但可能读取了“8”个字节。

输入数据之后报错,times最终输出都是1.


#include<iostream>
#include<algorithm>
using namespace std;
int main() {
    int n, H, a[] = { 0 },v=1,times=0;//n为武器数量,H为血量,a[]为各武器攻击力,times为攻击次数
    int t;//测试次数
    cin >> t;
    for (int m = 1;m <= t;m++)
    {
        cin >> n >> H;
        for (int i = 0;i < n;i++) {
            cin >> a[i];//输入每个武器的攻击力
            cout << a[i] << endl;
        }
        sort(a, a + n);//攻击力排序
        cout << a[n - 1];
        while (H > 0) {
            if (v == 1) {
                H -= a[n - 1];//用攻击最高的武器
                times += 1;
                v=0;
            }
            else {
                H -= a[n - 2];//用次高的武器
                times += 1;
                v=1;
            }
        }
        cout << times;//输出攻击次数
    }
    return 0;
}

有帮助望采纳

#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 1005;
int main() {
    int n, H, a[maxn] = { 0 },v=1,times=0;//n为武器数量,H为血量,a[]为各武器攻击力,times为攻击次数
    int t;//测试次数
    cin >> t;
    for (int m = 1;m <= t;m++)
    {
        cin >> n >> H;
        for (int i = 0;i < n;i++) {
            cin >> a[i];//输入每个武器的攻击力
            cout << a[i] << endl;
        }
        sort(a, a + n);//攻击力排序
        cout << a[n - 1];
        while (H > 0) {
            if (v == 1) {
                H -= a[n - 1];//用攻击最高的武器
                times += 1;
                v=0;
            }
            else {
                H -= a[n - 2];//用次高的武器
                times += 1;
                v=1;
            }
        }
        cout << times;//输出攻击次数
    }
    return 0;
}