fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. vector<int>a(1500,0);
  5.  
  6. int convertTimeToMin(string time){
  7. int hh,mm;
  8. sscanf(time.c_str(),"%d:%d",&hh,&mm);
  9. return hh*60 + mm;
  10. }
  11.  
  12. string minToHour(int startTime) {
  13. int hh = startTime / 60;
  14. int mm = startTime % 60;
  15.  
  16. stringstream ss;
  17. ss << setw(2) << setfill('0') << hh << ":" << setw(2) << setfill('0') << mm;
  18. return ss.str();
  19. }
  20.  
  21. string solve(vector<string>& input , int k){
  22. fill(a.begin(),a.end(),0);
  23. string ans;
  24. for(const auto& st:input){
  25. stringstream ss(st);
  26. string name,action,time1,time2;
  27. ss>>name>>action>>time1>>time2;
  28.  
  29. int v1 = convertTimeToMin(time1);
  30. int v2 = convertTimeToMin(time2);
  31.  
  32. a[v1] += 1;
  33. a[v2+1] += -1;
  34. }
  35.  
  36. for(int i=1;i<a.size();i++){
  37. a[i] = a[i-1] + a[i];
  38. }
  39.  
  40. int freeTime=0;
  41. for(int i=0;i<a.size();i++){
  42. if(a[i]==0){
  43. freeTime++;
  44. if(freeTime==k){
  45. int startTime = i-k+1;
  46. ans = minToHour(startTime);
  47. break;
  48. }
  49. }
  50. else{
  51. freeTime=0;
  52. }
  53. }
  54. return ans;
  55.  
  56. }
  57.  
  58. int main() {
  59. int n;
  60. cin>>n;
  61. int k;
  62. cin>>k;
  63. cin.ignore();
  64. vector<string>input(n);
  65. for(int i=0;i<n;i++){
  66. getline(cin,input[i]);
  67. }
  68.  
  69. string ans = solve(input,k);
  70. cout<<ans<<endl;
  71. return 0;
  72. }
Success #stdin #stdout 0s 5276KB
stdin
3
60
Sam sleep 12:00 23:59
al lunch 00:00 08:03
stdout
08:04