题目大意:一个n个整数的数组,m条查询指令。(1<=n,m<=100 000)每次询问第k个整数v的下标值,若不存在输出0。
#include<iostream> #include<map> #include<vector> #include<cstdio> using namespace std; map<int,vector<int> > a; int main() { int n,m,i,p,k,v; while(scanf("%d %d",&n,&m) == 2) { a.clear(); for(i=0;i<n;i++) { scanf("%d",&p); if(!a.count(p)) a[p]=vector<int> (); a[p].push_back(i+1); } while(m--) { scanf("%d %d",&k,&v); if(!a.count(v) || a[v].size() < k) printf("0\n"); else printf("%d\n",a[v][k-1]); } } return 0; }