Advertisement
shabbyheart

Job sequence with deadline greedy algorithm easy

Dec 22nd, 2019
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.60 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int n,d[100],p[100],j[1000],s[1000];
  4. class JobSequence{
  5. public:
  6.     void input()
  7.     {
  8.         cin>>n;
  9.         for(int i=1;i<=n;i++)
  10.         {
  11.             cin>>p[i]>>d[i];
  12.             s[i]=i;
  13.         }
  14.     }
  15.     int find_sequence()
  16.     {
  17.         selection_sort();
  18.         d[0] = j[0] = 0;
  19.         j[1] = 1;
  20.         int k = 1;
  21.         for(int i =2; i<=n; i++)
  22.         {
  23.             int r = k;
  24.             while(d[i] < d[j[r]] && d[j[r]] != r)
  25.             {
  26.                 r = r-1;
  27.             }
  28.             if(d[i] >= d[j[r]] && d[i] > r)
  29.             {
  30.                 for(int q=k; q>=r+1; q--)
  31.                     j[q+1] = j[q];
  32.                 j[r+1] = i;
  33.                 k = k+1;
  34.             }
  35.         }
  36.         return k;
  37.     }
  38.     void selection_sort()
  39.     {
  40.         for(int i =1;i<=n;i++)
  41.         {
  42.             int max_index = i;
  43.             for(int j =i+1;j<=n;j++)
  44.             {
  45.                 if(p[j]>p[max_index])
  46.                     max_index = j;
  47.             }
  48.             swap(p[i],p[max_index]);
  49.             swap(d[i],d[max_index]);
  50.             swap(s[i],s[max_index]);
  51.         }
  52.     }
  53. };
  54. int main()
  55. {
  56.     freopen("input.txt","r",stdin);
  57.     JobSequence js;
  58.     js.input();
  59.     int total_job=js.find_sequence();
  60.     for(int i =1;i<=n;i++)
  61.         cout<<p[i]<<" "<<d[i]<<" "<<s[i]<<endl;
  62.  
  63.     cout<<"Total selected job = "<<total_job<<endl;
  64.  
  65.     cout<<endl<<"Sequence of selected job =  ";
  66.     for(int i =1;i<=total_job;i++)
  67.     {
  68.          cout<<j[i]<<" ";
  69.     }
  70. }
  71. /*
  72. input
  73. 5
  74.  
  75. 15 3
  76. 10 1
  77. 5 2
  78. 1 2
  79. 20 2
  80. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement