import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class NPRE
{
private int pnum;
class SRT
{
int atime;
int stime;
int ftime;
int tat;
int ntat;
public SRT()
{}
// public FCFS(int atime)
// {
// }
}
public NPRE(int num)
{
pnum=num;
}
private ArrayList<SRT> obj;
{
obj=new ArrayList<>();
for(int i=0;i<pnum;i++)
{
SRT srt=new SRT();
srt.
atime=Integer.
parseInt(bf.
readLine());
srt.
stime=Integer.
parseInt(bf.
readLine());
obj.add(srt);
}
{
public int compare(SRT f1,SRT f2)
{
if(f1.atime<f2.atime)
return -1;
else
return 1;
}
});
}
public void findTAT()
{
ArrayList<SRT>arr=new ArrayList<>();
for(SRT srt:obj)
arr.add(srt);
int min=arr.get(0).atime;
int temp=0;
while(arr.size()!=0)
{
SRT srt=arr.get(0);
int remtime=arr.get(0).stime;
for(int i=1;i<arr.size();i++)
{
if(arr.get(i).atime<=min)
{
if(arr.get(i).stime<remtime)
{
remtime=arr.get(i).stime;
srt=arr.get(i);
}
}
}
if(srt.stime>0)
{
srt.stime-=1;
temp++;
}
else
{
srt.ftime=temp;
srt.tat=srt.ftime-srt.atime;
arr.remove(srt);
}
min=temp;
}
}
public void displayTAT()
{
for(int i=0;i<obj.size();i++)
{
System.
out.
println("tat for process"+i
+"is: "+obj.
get(i
).
tat);
}
}
{
int num
=Integer.
parseInt(bf.
readLine()); NPRE npre=new NPRE(num);
npre.createProcesses(bf);
npre.findTAT();
npre.displayTAT();
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CiAKLyogTmFtZSBvZiB0aGUgY2xhc3MgaGFzIHRvIGJlICJNYWluIiBvbmx5IGlmIHRoZSBjbGFzcyBpcyBwdWJsaWMuICovCiAKY2xhc3MgTlBSRSAKeyAgCglwcml2YXRlIGludCBwbnVtOwoJY2xhc3MgU1JUCgl7CgkJaW50ICBhdGltZTsKCQlpbnQgc3RpbWU7CgkJaW50IGZ0aW1lOwoJCWludCB0YXQ7CgkJaW50IG50YXQ7CgkJcHVibGljIFNSVCgpCgkJe30KCQkvLyBwdWJsaWMgRkNGUyhpbnQgYXRpbWUpCgkgLy8gICB7CiAKCSAvLyAgIH0KCX0KCXB1YmxpYyBOUFJFKGludCBudW0pCgl7CgkgICAgcG51bT1udW07Cgl9CiAKCXByaXZhdGUgQXJyYXlMaXN0PFNSVD4gb2JqOwogICAgcHVibGljIHZvaWQgY3JlYXRlUHJvY2Vzc2VzKEJ1ZmZlcmVkUmVhZGVyIGJmKSB0aHJvd3MgRXhjZXB0aW9uCiAgICB7CiAgICAJb2JqPW5ldyBBcnJheUxpc3Q8PigpOwogICAgCWZvcihpbnQgaT0wO2k8cG51bTtpKyspCiAgICAJewogICAgCQlTUlQgc3J0PW5ldyBTUlQoKTsKIAogICAgCQlzcnQuYXRpbWU9SW50ZWdlci5wYXJzZUludChiZi5yZWFkTGluZSgpKTsKIAogICAgCSAgIHNydC5zdGltZT1JbnRlZ2VyLnBhcnNlSW50KGJmLnJlYWRMaW5lKCkpOwogICAgCSAgIAogICAgCSAgIG9iai5hZGQoc3J0KTsKIAogICAgCX0KICAgIAlDb2xsZWN0aW9ucy5zb3J0KG9iaixuZXcgQ29tcGFyYXRvcjxTUlQ+KCkKICAgIAl7CiAgICAJCXB1YmxpYyBpbnQgY29tcGFyZShTUlQgZjEsU1JUIGYyKQogICAgCQl7CiAgICAJCSAgaWYoZjEuYXRpbWU8ZjIuYXRpbWUpCiAgICAJCSAgICByZXR1cm4gLTE7CiAgICAJCSAgICBlbHNlCiAgICAJCSAgICAgcmV0dXJuIDE7CiAgICAJCX0KICAgIAl9KTsKIAogICAgfQogICAgcHVibGljIHZvaWQgZmluZFRBVCgpCiAgICB7ICAgCiAgICAgICAgICAKICAgICAgIEFycmF5TGlzdDxTUlQ+YXJyPW5ldyBBcnJheUxpc3Q8PigpOwogICAgICBmb3IoU1JUIHNydDpvYmopCiAgICAgICAgYXJyLmFkZChzcnQpOwogICAgICAgIAogICAgICAgIGludCBtaW49YXJyLmdldCgwKS5hdGltZTsKICAgICAgICBpbnQgdGVtcD0wOwogICAgICAgIHdoaWxlKGFyci5zaXplKCkhPTApCiAgICAgICAgewogICAgICAgICAgICBTUlQgc3J0PWFyci5nZXQoMCk7CiAgICAgICAgICAgIGludCByZW10aW1lPWFyci5nZXQoMCkuc3RpbWU7CiAgICAgICAgICAgZm9yKGludCBpPTE7aTxhcnIuc2l6ZSgpO2krKykKICAgICAgICAgICB7CiAgICAgICAgICAgICAgIGlmKGFyci5nZXQoaSkuYXRpbWU8PW1pbikKICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgaWYoYXJyLmdldChpKS5zdGltZTxyZW10aW1lKQogICAgICAgICAgICAgICAgICAgeyAgCiAgICAgICAgICAgICAgICAgICAJIHJlbXRpbWU9YXJyLmdldChpKS5zdGltZTsKICAgICAgICAgICAgICAgICAgICAgc3J0PWFyci5nZXQoaSk7CiAgICAgICAgICAgICAgICAgICB9IAogICAgICAgICAgICAgICB9CiAgICAgICAgICAgfQogICAgICAgICAgIGlmKHNydC5zdGltZT4wKQogICAgICAgICAgIHsKICAgICAgICAgICAgc3J0LnN0aW1lLT0xOwogICAgICAgICAgICAgICB0ZW1wKys7CiAgICAgICAgICAgfQogICAgICAgICAgIGVsc2UKICAgICAgICAgICB7CiAgICAgICAgICAgICBzcnQuZnRpbWU9dGVtcDsKICAgICAgICAgICAgIHNydC50YXQ9c3J0LmZ0aW1lLXNydC5hdGltZTsKICAgICAgICAgICAgIGFyci5yZW1vdmUoc3J0KTsKICAgICAgICAgICB9CiAgICAgICAgICAgICBtaW49dGVtcDsKICAgICAgICAJCiAgICAgICAgfSAgICAgICAgIAogICAgICAgICB9CiAgICAgICAgIAogICAgICAgIAogICAgCiAgICBwdWJsaWMgdm9pZCBkaXNwbGF5VEFUKCkKICAgIHsKICAgIAlmb3IoaW50IGk9MDtpPG9iai5zaXplKCk7aSsrKQogICAgCXsKICAgIAkJU3lzdGVtLm91dC5wcmludGxuKCJ0YXQgZm9yIHByb2Nlc3MiK2krImlzOiAiK29iai5nZXQoaSkudGF0KTsKIAogICAgCX0KICAgIH0KIAoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7ICAgCgkJQnVmZmVyZWRSZWFkZXIgYmY9bmV3IEJ1ZmZlcmVkUmVhZGVyKG5ldyBJbnB1dFN0cmVhbVJlYWRlcihTeXN0ZW0uaW4pKTsKCQlpbnQgbnVtPUludGVnZXIucGFyc2VJbnQoYmYucmVhZExpbmUoKSk7CgkJTlBSRSBucHJlPW5ldyBOUFJFKG51bSk7CgkJbnByZS5jcmVhdGVQcm9jZXNzZXMoYmYpOwoJCW5wcmUuZmluZFRBVCgpOwoJCW5wcmUuZGlzcGxheVRBVCgpOwoJfQp9