Advertisement
Guest User

Untitled

a guest
Dec 8th, 2019
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.44 KB | None | 0 0
  1. #include <signal.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <unistd.h>
  5. #include <iostream>
  6. #include <thread>
  7. #include <set>
  8.  
  9. int serve_requests(int current_pos, std::set<int> requests) {
  10.     std::cout << "starting at " << current_pos << std::endl;
  11.     std::cout << "requests:";
  12.     for (int request : requests) {
  13.         std::cout << " " << request;
  14.     }
  15.     std::cout << std::endl;
  16.  
  17.     auto nearest_request = requests.lower_bound(current_pos);
  18.  
  19.     while(nearest_request != requests.end()) {
  20.         auto completed_request = nearest_request;
  21.         nearest_request++;
  22.  
  23.         std::cout << "completed request " << *completed_request << " distance: " << (*completed_request - current_pos) << std::endl;
  24.         current_pos = *completed_request;
  25.         requests.erase(completed_request);
  26.     }
  27.  
  28.     nearest_request--;
  29.     std::cout << "changing direction" << std::endl;
  30.  
  31.     while(!requests.empty()) {
  32.         auto completed_request = nearest_request;
  33.         if(nearest_request != requests.begin()) {
  34.             nearest_request--;
  35.         }
  36.  
  37.         std::cout << "completed request " << *completed_request << " distance: " << (current_pos - *completed_request) << std::endl;
  38.         current_pos = *completed_request;
  39.         requests.erase(completed_request);
  40.     }
  41.     return current_pos;
  42. }
  43.  
  44. int main() {
  45.     std::set requests = {1, 3, 4, 5, 7, 10, 11, 25, 30, 31, 33, 41};
  46.     serve_requests(12, requests);
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement