Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <signal.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <iostream>
- #include <thread>
- #include <set>
- int serve_requests(int current_pos, std::set<int> requests) {
- std::cout << "starting at " << current_pos << std::endl;
- std::cout << "requests:";
- for (int request : requests) {
- std::cout << " " << request;
- }
- std::cout << std::endl;
- auto nearest_request = requests.lower_bound(current_pos);
- while(nearest_request != requests.end()) {
- auto completed_request = nearest_request;
- nearest_request++;
- std::cout << "completed request " << *completed_request << " distance: " << (*completed_request - current_pos) << std::endl;
- current_pos = *completed_request;
- requests.erase(completed_request);
- }
- nearest_request--;
- std::cout << "changing direction" << std::endl;
- while(!requests.empty()) {
- auto completed_request = nearest_request;
- if(nearest_request != requests.begin()) {
- nearest_request--;
- }
- std::cout << "completed request " << *completed_request << " distance: " << (current_pos - *completed_request) << std::endl;
- current_pos = *completed_request;
- requests.erase(completed_request);
- }
- return current_pos;
- }
- int main() {
- std::set requests = {1, 3, 4, 5, 7, 10, 11, 25, 30, 31, 33, 41};
- serve_requests(12, requests);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement