int a[30000];とint *a=new int[30000];なら後者の方が速いだろ。
常に前者で確保すれば、初期の固定スタックが巨大化するため。