You can allocate such a big array on the heap:
int *arr;
arr = malloc (sizeof(int) * 500000);
Don't forget to check that allocation succeded (if not - malloc returns NULL).
And as pmg mentioned - since this array is not located in the stack, you have to free
it once you finished working with it.