Advertisement
kartikkukreja

Interval Scheduling

Aug 25th, 2013
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.10 KB | None | 0 0
  1. #include <cstdio>
  2. #include <algorithm>
  3. #include <queue>
  4. using namespace std;
  5.  
  6. class Interval {
  7. public:
  8.     int start, finish;
  9.  
  10.     bool operator < (const Interval& x) const   {
  11.         if (finish != x.finish)
  12.             return finish < x.finish;
  13.         return start < x.start;
  14.     }
  15. } *intervals;
  16.  
  17. int main()  {
  18.     int N, i, last_finished;
  19.  
  20.     scanf("%d", &N); //Number of intervals
  21.     intervals = new Interval[N];
  22.     for (i = 0; i < N; i++)
  23.         scanf("%d %d", &intervals[i].start, &intervals[i].finish);
  24.  
  25.     // sort intervals in non-decreasing order of finish times
  26.     sort(intervals, intervals + N);
  27.  
  28.     queue <int> opt;
  29.     // construct the optimal solution
  30.     for (i = 0, last_finished = 0; i < N; i++)
  31.         if (intervals[i].start >= last_finished)    {
  32.             opt.push(i);
  33.             last_finished = intervals[i].finish;
  34.         }
  35.  
  36.     // optimal solution
  37.     printf("%d\n", opt.size());
  38.     while (!opt.empty())    {
  39.         i = opt.front();
  40.         opt.pop();
  41.         printf("%d %d\n", intervals[i].start, intervals[i].finish);
  42.     }
  43.  
  44.     return 0;
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement