Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <vector>
- #include <unordered_map>
- #include <algorithm>
- std::vector<long long int> s;
- std::unordered_map<long long int, int> m;
- int main(){
- int N, C;
- scanf("%d %d", &N, &C);
- for(int i = 0; i < N; i++){
- long long int d;
- scanf("%lld", &d);
- s.push_back(d);
- m[d] = i+1;
- }
- std::sort(s.begin(), s.end());
- for(int j = 0; j < C; j++){
- long long int d;
- scanf("%lld", &d);
- std::vector<long long int>::iterator ub = std::upper_bound(s.begin(), s.end(), d);
- int k = 0, f = 0;
- int i = ub - s.begin();
- if(i == (int)s.size()) f = (int)s.size()-1, k = m[s[(int)s.size()-1]];
- else{
- if(i-1 >= 0 && d-s[i-1] < s[i] - d) k = m[s[i-1]], f = i-1;
- else if(i-1 >= 0 && d-s[i-1] == s[i] - d) k = (s[i-1] < s[i]) ? m[s[i-1]] : m[s[i]], f = (s[i-1] < s[i]) ? i-1 : i;
- else k = m[s[i]], f = i;
- }
- s.erase(s.begin() + f);
- printf("%d\n", k);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement