刷cf的时候碰到运行错误不知道怎么解决

cf的题目https://codeforces.com/contest/1777/problem/C

img

只有框框内代码不同,其他都一样,不知道为什么会有错误

img

img

img

下面是我的代码

#include
using namespace std;
using i64=long long;
int t,vis[200005],temp;
const int N=1e5;
vector<int>divs[N];
void solve(){
    int n,m;cin>>n>>m;
    vector<int>c(n);
    for(int i=0 ;i>c[i];
    }
    sort(c.begin(),c.end());
    int ans=1e9;
    int bad = m;
    vector<int>cnt(m+1);
    for(int i=0,j=0;iwhile(j<=n && bad>0){
            if(jfor(auto x:divs[c[j]]){
                    if(x<=m){bad -= !cnt[x]++;}
                }
            }
            j++;
        }
        if(j<=n)ans=min(ans,c[j-1]-c[i]);
        for(auto x:divs[c[i]]){
            if(x<=m)bad+=!--cnt[x];
        }
    }
    if(ans==1e9)ans=-1;
    cout<int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    for(int i=1 ;i<=N;i++){
        for(int j=i ;j<=N;j+=i){
            divs[j].push_back(i);
        }
    }
    cin>>t;
    while (t--) {
      solve();
    } 
    return 0;
}

  • j = N,divs[N] 这个数组越界了,divs 容器数组的索引最大为 N - 1。
  • 另外也要考虑 divs[j] 可能为NULL的情况