http://acm.hdu.edu.cn/showproblem.php?pid=5233
/* 用map和set进行离散化,离散化就是对于大数据进行重新编号 */ /************************************************ * Author :Powatr * Created Time :2015-8-12 18:27:42 * File Name :HDU5233 Gunner II.cpp ************************************************/ #include <cstdio> #include <algorithm> #include <iostream> #include <sstream> #include <cstring> #include <cmath> #include <string> #include <vector> #include <queue> #include <deque> #include <stack> #include <list> #include <map> #include <set> #include <bitset> #include <cstdlib> #include <ctime> using namespace std; #define lson l, mid, rt << 1 #define rson mid + 1, r, rt << 1 | 1 typedef long long ll; const int MAXN = 1e5 + 10; const int INF = 0x3f3f3f3f; const int MOD = 1e9 + 7; set<int> s[MAXN]; map<int, int> mp; int main(){ int n, m; int x; while(~scanf("%d%d", &n, &m)){ for(int i = 1; i <= n; i++) s[i].clear(); mp.clear(); int cnt = 0; for(int i = 1; i <= n; i++){ scanf("%d", &x); if(!mp[x]) mp[x] = ++cnt; s[mp[x]].insert(i); } for(int i = 1; i <= m; i++){ scanf("%d", &x); if(!s[mp[x]].size()) puts("-1"); else { printf("%d ", *(s[mp[x]].begin())); s[mp[x]].erase(s[mp[x]].begin()); } } } return 0; }