熟悉一下STL用法:
map:
m.count(a) 返回第一维中a的个数;
m[a].size() 返回m[a]中元素的个数;
a.clear() 清空a;
/****************************************************/ #include <iostream> #include <cstring> #include <cstdio> #include <cstdlib> #include <cmath> #include <cctype> #include <stack> #include <map> #include <queue> #include <vector> #include <algorithm> #include <ctime> #define EPS 1E-8 #define MAXN 60000 #define MAXM 31 #define INF (~0U >> 2) #define MOD 1000000007 #define Lson l, mid, rt << 1 #define Rson mid + 1, r, rt << 1 | 1 using namespace std; typedef long long LL; /****************************************************/ 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 x; scanf("%d", &x); if(!a.count(x)) a[x] = vector<int>(); a[x].push_back(i + 1); } while (m--) { int u, v; scanf("%d%d", &u, &v); if (!a.count(v) || a[v].size() < u) puts("0"); else printf("%d\n", a[v][u - 1]); } } }