关于#c++#的问题:为什么这样会出现runtime error

#include <iostream>
using namespace std;
const int N=100010;
int main()
{
    int n;
    int a[N],s[N];
    cin>>n;
    for(int i=0;i<n;i++) cin>>a[i];
    int res=0;
    for(int i=0,j=0;i<n;i++)
    {
        s[a[i]]++;
        while(s[a[i]]>1)
        {
            s[a[j]]--;
            j++;
        }
        res=max(res,i-j+1);
    }
    cout<<res<<endl;
    return 0;
}

为什么这样会出现runtime error

在占用内存空间较大的局部数组声明的前面加static将其从堆栈数据段挪到全局数据段即可避开因局部数组大小超过默认堆栈大小1MB造成程序不能正常运行的问题。

s[a[i]]++; a[i]是从控制台输入的数据,以此作为s 数组的下标,极为不和常理 ,另外s要在原值上加1 ,s数组没有初始化,
你的程序要达到什么目的,要说明白,这是提问 和人交流,最为重要的信息,不要省略。