Advertisement
bozhilov

Programming Contest - EX1

Mar 25th, 2023 (edited)
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.40 KB | None | 0 0
  1. #include <cmath>
  2. #include <cstdio>
  3. #include <vector>
  4. #include <iostream>
  5. #include <algorithm>
  6. using namespace std;
  7.  
  8. int time_to_minutes(string time_str) {
  9.     int hours = stoi(time_str.substr(0, 2));
  10.     int minutes = stoi(time_str.substr(3, 2));
  11.    
  12.     return (hours - 8) * 60 + minutes;
  13. }
  14.  
  15. int main() {
  16.     int iter;
  17.     cin>>iter;
  18.    
  19.     vector<pair<int, int>> requests;
  20.     for (int i = 0; i < iter; i++) {
  21.         string input;
  22.         cin>>input;
  23.        
  24.         string start_str = input.substr(0, 5);
  25.         string end_str = input.substr(6, 5);
  26.  
  27.         int start_time = time_to_minutes(start_str);
  28.         int end_time = time_to_minutes(end_str);
  29.        
  30.  
  31.         if (start_time > end_time || end_time > 10 * 60 || start_time < 0) {
  32.             continue;
  33.         }
  34.  
  35.         requests.push_back(make_pair(end_time, start_time));
  36.     }
  37.    
  38.     sort(requests.begin(), requests.end()); // sort by start time
  39.    
  40.     int max_requests = 0;
  41.     int end_time = 0;
  42.    
  43.     int vec_len = requests.size();
  44.    
  45.    
  46.     for (int i = 0; i < vec_len; i++) {
  47.        
  48.         int start_time = requests[i].second;
  49.         int end_time_this = requests[i].first;
  50.        
  51.         if (start_time >= end_time) { // this request can be granted
  52.             max_requests++;
  53.             end_time = end_time_this;
  54.         }
  55.     }
  56.    
  57.     cout<<max_requests<<endl;
  58.    
  59.     return 0;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement