这个题就是给你一个数组,要求查询某个数第某次出现的位置。
本来打算用数组模拟实现的,但是书上建议说用map+vector容器来做,感觉的确要简单许多。学习了!
在这里也提醒自己, 以后数组可以用vector实现,并不需要担心数组的大小。
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<map>
#include<vector>
using namespace std;
map<int,vector<int> > a;
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)!=EOF)
{
a.clear();
for(int i=0;i<n;i++)
{
int ita;
scanf("%d",&ita);
if(!a.count(ita))
a[ita]=vector<int>();
a[ita].push_back(i+1);
}
for(int i=0;i<m;i++)
{
int ita,itb;
scanf("%d%d",&ita,&itb);
if(!a.count(itb)||a[itb].size()<ita)
printf("0\n");
else
printf("%d\n",a[itb][ita-1]);
}
}
return 0;
}