如果你用数组,看看自己有没有看错数据范围,n≤2×106,得开到 2000005。
如果你用的是 vector,建议好好看看教材,vector 默认长度为 0,读入时把:
for(int i = 1; i <= n; i++){
cin >> a[i];
}
换成:
for(int i = 1; i <= n; i++){
int tmp;
cin >> tmp;
a.push_back(tmp);
}
注意,vector 下标同样从 0 开始,这样写的话,输出要写 a[p - 1]
(p 是查询的序号)。
可以提前塞一个无关数据占位,使下标与序号一一对应。