1class Solution {2public:3int idx;4unordered_map<int, int> mp;5set<int> s;6Solution(int n, vector<int> &blacklist) {7idx = n - blacklist.size();8n--;9for (int i = 0; i < blacklist.size(); i++) s.insert(blacklist[i]);10for (int i = 0; i < blacklist.size(); i++) {11if (blacklist[i] < idx) {12while (s.find(n) != s.end()) n--;13mp[blacklist[i]] = n;14n--;15}16}17}1819int pick() {20int ans = rand() % (idx);21if (mp.count(ans)) return mp[ans];22return ans;23}24};