Could not get what type of eror is coming and to get 5*10^7 prime no what is size of aray to be declared

#include<bits/stdc++.h>
using namespace std;
#define num 100000000
long long int arr[100000000];

int main()
{
int n;
cin>>n;
//long long int arr[100000000];
for(int i=0;i<num;i++)
{
arr[i]=0;
}
arr[0]=arr[1]=1;
vector a;
;
for(int i=2;i<num;i++)
{
if(arr[i]==0)
{
a.push_back(arr[i]);
for(int j=i*i;j<num;j+=i)
{
arr[j]=1;
}
}
}
cout<<a[n]<<endl;
return 0;
}

Harshit, you are required to use prime seive optimisation in your code… as

void prime_seive(long long int p[],long long int N)
{
p[0]=p[1]=0;

for(long long int i=3;i<=N;i+=2)
{
	p[i]=1;
}
for(long long int i=3;i<=N;i+=2)
{
	if(p[i]==1)
	{
		for(long long int j=i*i;j<=N;j=j+2*i)
		{
			p[j]=0;
		}
	}
}
return;

}

and in the main function, you can use
long long int N=100000000;
long long int p[N];
prime_seive(p,N);