/*CODE WRITTEN BY MAYANK PADIA*/
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double ld;
#define pb push_back
#define F first
#define S second
#define mp make_pair
int main(){
#ifndef ONLINE_JUDGE
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
#endif
ios::sync_with_stdio(0); cin.tie(0);
ll n,t;
cout<<"Enter Number of Processes\n";
cin>>n;
queue<pair<string,ll> > readyQueue,r1;
cout<<"Enter 1. Process Name 2. Burst Time 3. Arrival Time\n";
vector<pair<ll,pair<string,ll> > > v;
for (int i = 0; i < n; ++i)
{
ll x,y;
string s;
cin>>s>>x>>y;
v.pb(mp(y,mp(s,x)));
}
sort(v.begin(),v.end());
for (int i = 0; i < n; ++i)
{
ll x,y;
string s;
readyQueue.push(mp(v[i].S.F,v[i].S.S));
}
ll t1=0;
ld averaget1=0,averaget2=0;
for (int i = 0; i < n; ++i)
{
cout<<"readyQueue:\n";
while(!readyQueue.empty())
{/* code */
cout<<readyQueue.front().F<<" "<<readyQueue.front().S<<endl;
r1.push(mp(readyQueue.front().F,readyQueue.front().S));
readyQueue.pop();
}
while(!r1.empty()){
readyQueue.push(mp(r1.front().F,r1.front().S));
r1.pop();
}
cout<<"\n\n";
pair<string,ll> p;
p.F=readyQueue.front().F;
p.S=readyQueue.front().S;
readyQueue.pop();
t1=max(t1,v[i].F);
cout<<"Process Schedule: At time: "<<endl<<p.F<<" "<<t1<<endl;
cout<<"Processcompleted TAT: Waiting Time: "<<endl<<p.F<<" "<<t1+p.S-v[i].F<<" "<<t1-v[i].F<<endl;
t1+=p.S;
averaget1+=t1-v[i].F;
averaget2+=t1-p.S-v[i].F;
}
cout<<"\n\n\n"<<"average Waiting Time: "<<averaget2/n<<endl;
cout<<"Average TurnAroundTime:"<<averaget1/n<<endl;
#ifndef ONLINE_JUDGE
cout<<"\nTime Elapsed : " << 1.0*clock() / CLOCKS_PER_SEC << " s\n";
#endif
return 0;
}
Ci8qQ09ERSBXUklUVEVOIEJZIE1BWUFOSyBQQURJQSovCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKdHlwZWRlZiBkb3VibGUgbGQ7CiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgRiBmaXJzdAojZGVmaW5lIFMgc2Vjb25kCiNkZWZpbmUgbXAgbWFrZV9wYWlyCmludCBtYWluKCl7CiAgICAgICAgI2lmbmRlZiBPTkxJTkVfSlVER0UKICAgICAgICAgICAgZnJlb3BlbigiaW5wdXQudHh0IiwiciIsc3RkaW4pOwogICAgICAgICAgICBmcmVvcGVuKCJvdXRwdXQudHh0IiwidyIsc3Rkb3V0KTsKICAgICAgICAjZW5kaWYKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOwogICAgbGwgbix0OwogICAgY291dDw8IkVudGVyIE51bWJlciBvZiBQcm9jZXNzZXNcbiI7CiAgICBjaW4+Pm47CiAgICBxdWV1ZTxwYWlyPHN0cmluZyxsbD4gPiByZWFkeVF1ZXVlLHIxOwogICAgY291dDw8IkVudGVyIDEuIFByb2Nlc3MgTmFtZSAgMi4gQnVyc3QgVGltZSAgMy4gQXJyaXZhbCBUaW1lXG4iOwogICAgdmVjdG9yPHBhaXI8bGwscGFpcjxzdHJpbmcsbGw+ID4gPiB2OwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpCiAgICB7CiAgICAgICAgbGwgeCx5OwogICAgICAgIHN0cmluZyBzOwogICAgICAgIGNpbj4+cz4+eD4+eTsKICAgICAgICB2LnBiKG1wKHksbXAocyx4KSkpOwogICAgfQogICAgc29ydCh2LmJlZ2luKCksdi5lbmQoKSk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkKICAgIHsKICAgICAgICBsbCB4LHk7CiAgICAgICAgc3RyaW5nIHM7IAogICAgICAgIHJlYWR5UXVldWUucHVzaChtcCh2W2ldLlMuRix2W2ldLlMuUykpOwogICB9CiAgICBsbCB0MT0wOwogICAgbGQgYXZlcmFnZXQxPTAsYXZlcmFnZXQyPTA7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkKICAgIHsKICAgICAgICBjb3V0PDwicmVhZHlRdWV1ZTpcbiI7CiAgICAgICAgd2hpbGUoIXJlYWR5UXVldWUuZW1wdHkoKSkKICAgICAgICAgICAgey8qIGNvZGUgKi8KICAgICAgICAgICAgY291dDw8cmVhZHlRdWV1ZS5mcm9udCgpLkY8PCIgIjw8cmVhZHlRdWV1ZS5mcm9udCgpLlM8PGVuZGw7CiAgICAgICAgICAgIHIxLnB1c2gobXAocmVhZHlRdWV1ZS5mcm9udCgpLkYscmVhZHlRdWV1ZS5mcm9udCgpLlMpKTsKICAgICAgICAgICAgcmVhZHlRdWV1ZS5wb3AoKTsKICAgICAgICB9CiAgICAgICAgd2hpbGUoIXIxLmVtcHR5KCkpewogICAgICAgICAgICByZWFkeVF1ZXVlLnB1c2gobXAocjEuZnJvbnQoKS5GLHIxLmZyb250KCkuUykpOwogICAgICAgICAgICByMS5wb3AoKTsKICAgICAgICB9CiAgICAgICAgY291dDw8IlxuXG4iOwogICAgICAgIHBhaXI8c3RyaW5nLGxsPiBwOwogICAgICAgIHAuRj1yZWFkeVF1ZXVlLmZyb250KCkuRjsKICAgICAgICBwLlM9cmVhZHlRdWV1ZS5mcm9udCgpLlM7CiAgICAgICAgcmVhZHlRdWV1ZS5wb3AoKTsKICAgICAgICB0MT1tYXgodDEsdltpXS5GKTsKICAgICAgICBjb3V0PDwiUHJvY2VzcyBTY2hlZHVsZTogICAgQXQgdGltZTogICAgICAgICI8PGVuZGw8PHAuRjw8IiAgICAgICAgICAgICAgICAgICAgICAgIjw8dDE8PGVuZGw7CiAgICAgICAgY291dDw8IlByb2Nlc3Njb21wbGV0ZWQgVEFUOiAgICBXYWl0aW5nIFRpbWU6ICAgIjw8ZW5kbDw8cC5GPDwiICAgICAgICAgICAgICAgICI8PHQxK3AuUy12W2ldLkY8PCIgICAgICAgICAgICI8PHQxLXZbaV0uRjw8ZW5kbDsKICAgICAgICB0MSs9cC5TOwogICAgICAgIGF2ZXJhZ2V0MSs9dDEtdltpXS5GOwogICAgICAgIGF2ZXJhZ2V0Mis9dDEtcC5TLXZbaV0uRjsKICAgIH0KICAgIGNvdXQ8PCJcblxuXG4iPDwiYXZlcmFnZSBXYWl0aW5nIFRpbWU6ICAgIjw8YXZlcmFnZXQyL248PGVuZGw7CiAgICBjb3V0PDwiQXZlcmFnZSBUdXJuQXJvdW5kVGltZToiPDxhdmVyYWdldDEvbjw8ZW5kbDsKICAgICNpZm5kZWYgT05MSU5FX0pVREdFCiAgICAgICAgY291dDw8IlxuVGltZSBFbGFwc2VkIDogIiA8PCAxLjAqY2xvY2soKSAvIENMT0NLU19QRVJfU0VDIDw8ICIgc1xuIjsKICAgICNlbmRpZgpyZXR1cm4gMDsKfQ==