c语言程序问题-分拣-

img

#include
#include

int main()
{
int n,a,l[30],r[30];
scanf("%d",&n);
for (int i=0;i
{
l[i]=0;
r[i]=0;
}
for (int i=0;i
{
scanf("%d",&a);
if (a%2==1)
{
l[i]=a;
}
else
{
r[n-i]=a;
}
}
for (int i=0;i
{
if (l[i]!=0)
{
printf("%d ",l[i]);
}
}
for (int i=0;i
{
if (r[i]!=0)
{
printf("%d ",r[i]);
}
}
return 0;
}
我运行这段代码后报错了,请问如何修改?

#include <stdio.h>

#define N 100000

int left[N];
int right[N];

int main() {
  int leftSize = 0, rightSize = 0, n;
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    int x;
    scanf("%d", &x);
    if (x % 2 != 0)
      left[leftSize++] = x;
    else
      right[rightSize++] = x;
  }
  for (int i = 0; i < leftSize; i++)
    printf("%d ", left[i]);
  for (int i = rightSize - 1; i >= 0; i--)
    printf("%d ", right[i]);
  return 0;
}

人数据n是100000
你这数组那么小 怎么存的下