思路:将map与vector结合起来,存入每一个值的位置,相应的第几个也就是vector的下标+1
#include <iostream>
#include <stdio.h>
#include <map>
#include <vector>
using namespace std;
int main()
{
//freopen("in.txt","r",stdin);
int n,m;
while(scanf("%d%d",&n,&m)!=EOF)
{
map< int,vector<int> >a;
int tmp;
for(int i=0;i<n;i++)
{
scanf("%d",&tmp);
if(!a.count(tmp))
a[tmp] = vector<int>();
a[tmp].push_back(i+1);
}
for(int i=0;i<m;i++)
{
int x,y;
scanf("%d%d",&x,&y);
if(!a.count(y)||a[y].size()<x)
printf("0\n");
else
printf("%d\n",a[y][x-1]);
}
}
}