刷cf的时候碰到一个问题1e5不能过1e6反而过了,不知道是为什么

刷cf的时候碰到一个问题1e5不能过1e6反而过了,想知道为什么时间查那么多

这个是题目:https://codeforces.com/contest/1760/problem/E

这是碰到的问题

img

img

img

这是我的代码

```c++
#include
using namespace std;
using i64=long long;
i64 a[1000005],n;
i64 cal(){
    i64 ans=0,num=0;
    for(int i=n;i>=1;i--){
        if(a[i]==0)num++;
        else ans+=num;
    }
    return ans;
}
void solve(){
       cin>>n;
        for(int i=1;i<=n;i++){
            cin>>a[i];
        }
        int pos=0;
        for(int i=1;i<=n;i++){
            if(!a[i]){
                pos=i;
                break;
            }
        }
        i64 ans=0;
        ans=max(ans,cal());
        a[pos]=1;
        ans=max(ans,cal());
        a[pos]=0;
        for(int i=n;i>0;i--){
            if(a[i]){
                pos=i;
                break;
            }
        }
        a[pos]=0;
        ans=max(ans,cal());
        cout<false);cin.tie(0);cout.tie(0);
    int t;cin>>t;
    while(t--){
        solve();
    }
    return 0;
}



###### 如图所示将100005变成1000005就可以AC 不知道问什么



数组开大点过不是正常操作吗?应该是数组不够大导致的问题。

这个题目描述是2e5个数据,1e5的数组不够

img