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)
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+YXJyPW5ldyBBcnJheUxpc3Q8PigpOwogICAgICBmb3IoU1JUIHNydDpvYmopCiAgICAgICAgYXJyLmFkZChzcnQpOwogICAgICAgIAogICAgICAgIGludCBtaW49YXJyLmdldCgwKS5hdGltZTsKICAgICAgICBpbnQgdGVtcD0wOwogICAgICAgIHdoaWxlKGFyci5zaXplKCkhPTApCiAgICAgICAgewogICAgICAgICAgICBTUlQgc3J0PWFyci5nZXQoMCk7CiAgICAgICAgICAgIGludCByZW10aW1lPWFyci5nZXQoMCkuc3RpbWU7CiAgICAgICAgICAgZm9yKGludCBpPTE7aTxhcnIuc2l6ZSgpO2krKykKICAgICAgICAgICB7CiAgICAgICAgICAgICAgIGlmKGFyci5nZXQoaSkuYXRpbWU8PW1pbikKICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgaWYoYXJyLmdldChpKS5zdGltZTxyZW10aW1lKQogICAgICAgICAgICAgICAgICAgICBzcnQ9YXJyLmdldChpKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgIH0KICAgICAgICAgICB9CiAgICAgICAgICAgaWYoc3J0LnN0aW1lPjApCiAgICAgICAgICAgewogICAgICAgICAgICBzcnQuc3RpbWUtPTE7CiAgICAgICAgICAgICAgIHRlbXArKzsKICAgICAgICAgICB9CiAgICAgICAgICAgZWxzZQogICAgICAgICAgIHsKICAgICAgICAgICAgIHNydC5mdGltZT10ZW1wOwogICAgICAgICAgICAgc3J0LnRhdD1zcnQuZnRpbWUtc3J0LmF0aW1lOwogICAgICAgICAgICAgYXJyLnJlbW92ZShzcnQpOwogICAgICAgICAgIH0KICAgICAgICAgICAgIG1pbj10ZW1wOwogICAgICAgIAkKICAgICAgICB9ICAgICAgICAgCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgCiAgICAKICAgIHB1YmxpYyB2b2lkIGRpc3BsYXlUQVQoKQogICAgewogICAgCWZvcihpbnQgaT0wO2k8b2JqLnNpemUoKTtpKyspCiAgICAJewogICAgCQlTeXN0ZW0ub3V0LnByaW50bG4oInRhdCBmb3IgcHJvY2VzcyIraSsiaXM6ICIrb2JqLmdldChpKS50YXQpOwogCiAgICAJfQogICAgfQogCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsgICAKCQlCdWZmZXJlZFJlYWRlciBiZj1uZXcgQnVmZmVyZWRSZWFkZXIobmV3IElucHV0U3RyZWFtUmVhZGVyKFN5c3RlbS5pbikpOwoJCWludCBudW09SW50ZWdlci5wYXJzZUludChiZi5yZWFkTGluZSgpKTsKCQlOUFJFIG5wcmU9bmV3IE5QUkUobnVtKTsKCQlucHJlLmNyZWF0ZVByb2Nlc3NlcyhiZik7CgkJbnByZS5maW5kVEFUKCk7CgkJbnByZS5kaXNwbGF5VEFUKCk7Cgl9Cn0=