#include <bits/stdc++.h>
using namespace std;
struct Process
{
int pid;
int bt;
int priority;
} ;
bool comparison( Process a, Process b)
{
return ( a.priority > b.priority ) ;
}
void findWaitingTime( Process proc[ ] , int n,
int wt[ ] )
{
wt[ 0 ] = 0 ;
for ( int i = 1 ; i < n ; i++ )
wt[ i] = proc[ i- 1 ] .bt + wt[ i- 1 ] ;
}
void findTurnAroundTime( Process proc[ ] , int n,
int wt[ ] , int tat[ ] )
{
for ( int i = 0 ; i < n ; i++ )
tat[ i] = proc[ i] .bt + wt[ i] ;
}
void findavgTime( Process proc[ ] , int n)
{
int wt[ n] , tat[ n] , total_wt = 0 , total_tat = 0 ;
findWaitingTime( proc, n, wt) ;
findTurnAroundTime( proc, n, wt, tat) ;
for ( int i= 0 ; i< n; i++ )
{
total_wt = total_wt + wt[ i] ;
total_tat = total_tat + tat[ i] ;
cout << "Processes " << proc[ i] .pid << "\t "
<< " Burst time " << proc[ i] .bt << "\t " << " Waiting time " << wt[ i]
<< "\t " << " Turn around time" << tat[ i] << endl;
}
cout << "\n Average waiting time = "
<< ( float ) total_wt / ( float ) n;
cout << "\n Average turn around time = "
<< ( float ) total_tat / ( float ) n;
}
void priorityScheduling( Process proc[ ] , int n)
{
sort( proc, proc + n, comparison) ;
for ( int i = 0 ; i < n; i++ )
cout << proc[ i] .pid << " " ;
findavgTime( proc, n) ;
}
int main( )
{
Process proc[ ] = { { 1 , 10 , 2 } , { 2 , 5 , 0 } , { 3 , 8 , 1 } } ;
int n = sizeof proc / sizeof proc[ 0 ] ;
priorityScheduling( proc, n) ;
return 0 ;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnN0cnVjdCBQcm9jZXNzCnsKICAgIGludCBwaWQ7ICAKICAgIGludCBidDsgICAKICAgIGludCBwcmlvcml0eTsgCn07CmJvb2wgY29tcGFyaXNvbihQcm9jZXNzIGEsIFByb2Nlc3MgYikKewogICAgcmV0dXJuIChhLnByaW9yaXR5ID4gYi5wcmlvcml0eSk7Cn0Kdm9pZCBmaW5kV2FpdGluZ1RpbWUoUHJvY2VzcyBwcm9jW10sIGludCBuLAogICAgICAgICAgICAgICAgICAgICBpbnQgd3RbXSkKewogICAgd3RbMF0gPSAwOwogICAgZm9yIChpbnQgIGkgPSAxOyBpIDwgbiA7IGkrKyApCiAgICAgICAgd3RbaV0gPSAgcHJvY1tpLTFdLmJ0ICsgd3RbaS0xXSA7Cn0Kdm9pZCBmaW5kVHVybkFyb3VuZFRpbWUoIFByb2Nlc3MgcHJvY1tdLCBpbnQgbiwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3dFtdLCBpbnQgdGF0W10pCnsKICAgIGZvciAoaW50ICBpID0gMDsgaSA8IG4gOyBpKyspCiAgICAgICAgdGF0W2ldID0gcHJvY1tpXS5idCArIHd0W2ldOwp9CnZvaWQgZmluZGF2Z1RpbWUoUHJvY2VzcyBwcm9jW10sIGludCBuKQp7CiAgICBpbnQgd3Rbbl0sIHRhdFtuXSwgdG90YWxfd3QgPSAwLCB0b3RhbF90YXQgPSAwOwogICAgZmluZFdhaXRpbmdUaW1lKHByb2MsIG4sIHd0KTsKICAgIGZpbmRUdXJuQXJvdW5kVGltZShwcm9jLCBuLCB3dCwgdGF0KTsKICAgIGZvciAoaW50ICBpPTA7IGk8bjsgaSsrKQogICAgewogICAgICAgIHRvdGFsX3d0ID0gdG90YWxfd3QgKyB3dFtpXTsKICAgICAgICB0b3RhbF90YXQgPSB0b3RhbF90YXQgKyB0YXRbaV07CiAgICAgICAgY291dCA8PCAiUHJvY2Vzc2VzICIgPDwgcHJvY1tpXS5waWQgPDwgIlx0IgogICAgICAgICAgICAgPDwgIiBCdXJzdCB0aW1lICAiPDwgcHJvY1tpXS5idCA8PCAiXHQgICAgIiAgPDwgIiBXYWl0aW5nIHRpbWUgICI8PCB3dFtpXQogICAgICAgICAgICAgPDwgIlx0ICAiICA8PCAiIFR1cm4gYXJvdW5kIHRpbWUiPDwgdGF0W2ldIDw8ZW5kbDsKICAgIH0KIAogICAgY291dCA8PCAiXG5BdmVyYWdlIHdhaXRpbmcgdGltZSA9ICIKICAgICAgICAgPDwgKGZsb2F0KXRvdGFsX3d0IC8gKGZsb2F0KW47CiAgICBjb3V0IDw8ICJcbkF2ZXJhZ2UgdHVybiBhcm91bmQgdGltZSA9ICIKICAgICAgICAgPDwgKGZsb2F0KXRvdGFsX3RhdCAvIChmbG9hdCluOwp9CiAKdm9pZCBwcmlvcml0eVNjaGVkdWxpbmcoUHJvY2VzcyBwcm9jW10sIGludCBuKQp7CiAgICBzb3J0KHByb2MsIHByb2MgKyBuLCBjb21wYXJpc29uKTsKICAgIGZvciAoaW50ICBpID0gMCA7IGkgPCAgbjsgaSsrKQogICAgICAgIGNvdXQgPDwgcHJvY1tpXS5waWQgPDwiICIgOwogCiAgICBmaW5kYXZnVGltZShwcm9jLCBuKTsKfQoKaW50IG1haW4oKQp7CiAgICBQcm9jZXNzIHByb2NbXSA9IHt7MSwgMTAsIDJ9LCB7MiwgNSwgMH0sIHszLCA4LCAxfX07CiAgICBpbnQgbiA9IHNpemVvZiBwcm9jIC8gc2l6ZW9mIHByb2NbMF07CiAgICBwcmlvcml0eVNjaGVkdWxpbmcocHJvYywgbik7CiAgICByZXR1cm4gMDsKfQo=