منظورم رو اشتباه فهمیدی، نپرسیدم آرایه ات حداکثر چند تا عدد داره. منظورم این بود که هر عدد حداکثر چنده! اگر حداکثر 6^10 باشه یه راه خوبش اینه که یه آرایه از وکتور ها بگیری به اندازه حداکثر مقدار هر عدد (که فرض کردیم 6^10 باشه). بعد هر عددی که خوندی، به وکتورش، اندیسش رو اضافه کنی.
کد:

#include <iostream>
#include <vector>

using namespace std;

vector<int> tedad[1000001]; // tedad tekrare har adad va andis ro into negah midarim

int main()
{
int n; // tedad adad ha
cin >> n;
int x[100001]; // arraye adad ha
for (int i = 0; i < n; i++)
{
cin >> x[i];
tedad[x[i]].push_back(i);
}
}


الان توی این کد تعداد تکرار عددی مثل q برابر است با ()tedad[q].size
و اندیس هایی که عددی مثل q اومدن، توی وکتور [tedad[q هست.