rendered paste body//209 main.cpp
//Haroon Jameel
//Homework 2A
#include <iostream>
#include <queue>
#include <assert.h>
using namespace std;
struct Customer{
int arrival_time;
int items;
Customer(int a, int i)
{
arrival_time = a;
items = i;
}
};
class checkout{
public:
void depart();
void arrive(Customer);
bool empty() const;
int next_departure() const;
private:
queue<Customer> que;
int departure_time;
};
void checkout::arrive(Customer c){
que.push(c);
if(empty())
departure_time = c.arrival_time + c.items;
}
void checkout::depart(){
assert(!empty());
Customer c = que.front();
que.pop();
if(!que.empty())
departure_time += que.front().items;
}
int checkout::next_departure()const{
assert(!empty());
return departure_time;
}
bool checkout::empty()const{
return que.empty();
}
int main()
{
int arrive = 0;
int items = 0;
int depart = 0;
checkout c;
while (cin>>arrive>>items){
Customer a(arrive,items);
cout << "A " << arrive << " " << items<< endl;
c.arrive(a);
while(!c.empty() && c.next_departure() <= arrive)
cout << "D"<< c.next_departure() << endl;
c.depart();
}
while(!c.empty())
c.depart();
return 0;
}
//414.85