题意:给定一个数组,然后有若干组询问,每次询问求第k个v出现的位置。
思路:用vector构造模拟,吧相同的数的位置放在同一个vector里,对于每次查询输出mp[v][x-1];
code:
#include <bits/stdc++.h>
using namespace std;map<int,vector<int> >mp;int main()
{int n,m,k,v;while (~scanf("%d%d",&n,&m)){mp.clear();for (int i=0;i<n;i++){scanf("%d",&v);mp[v].push_back(i+1);}for (int i=0;i<m;i++){scanf("%d%d",&k,&v);if (k>mp[v].size())puts("0");else printf("%d\n",mp[v][k-1]);}}
}