段错误:您的程序发生段错误,可能是数组越界,这是怎么回事

 #include<stdio.h> 
int main(void)
{
    int N,p,i,j,index,temp; 
    int M;
    int input[10001];
    int cnt[10001];
    scanf("%d%d",&N,&p);
    for(i=0;i<N;i++)
    {
        scanf("%d",input[i]);
    }
    for(i=0;i<N;i++)
    {
        index=i;
        for(j=i+1;j<N-i;j++)
        {
            if(input[j]<input[index])
            index=j;
        }
        temp=input[i];
        input[i]=input[index];
        input[index]=temp;
    }

     for(i=0;i<N;i++)
     {
        M=p*input[i];
        for(j=i+1;j<N;j++)
        {
            if(M<=input[j])
            cnt[i]++;
         }
     }
     index=0;

     for(i=1;i<N-1;i++)
     {  
            if(cnt[i]>cnt[index])
            index=i;

     }
     printf("%d\n",cnt[index]);
     return 0;
}

scanf("%d",input[i]);
应该是scanf("%d",&input[i]);
少了个&

段错误不等于越界,这个要搞清楚什么是段错误

提示不写的很清楚了么,你的程序数组越界了,debug模式,按F5运行,看看具体蹦哪儿了应该是index值大于数组最大下标了