Advertisement
Guest User

Untitled

a guest
Jan 17th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.07 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <vector>
  4. #include <unordered_map>
  5. #include <algorithm>
  6.  
  7. std::vector<long long int> s;
  8. std::unordered_map<long long int, int> m;
  9.  
  10. int main(){
  11.     int N, C;
  12.     scanf("%d %d", &N, &C);
  13.    
  14.     for(int i = 0; i < N; i++){
  15.         long long int d;
  16.         scanf("%lld", &d);
  17.         s.push_back(d);
  18.         m[d] = i+1;
  19.     }
  20.     std::sort(s.begin(), s.end());
  21.     for(int j = 0; j < C; j++){
  22.         long long int d;
  23.         scanf("%lld", &d);
  24.         std::vector<long long int>::iterator ub = std::upper_bound(s.begin(), s.end(), d);
  25.         int k = 0, f = 0;
  26.         int i = ub - s.begin();
  27.         if(i == (int)s.size()) f = (int)s.size()-1, k = m[s[(int)s.size()-1]];
  28.         else{
  29.             if(i-1 >= 0 && d-s[i-1] < s[i] - d) k = m[s[i-1]], f = i-1;
  30.             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;
  31.             else k = m[s[i]], f = i;
  32.         }
  33.         s.erase(s.begin() + f);
  34.         printf("%d\n", k);
  35.     }
  36.     return 0;      
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement