In a supermarket, there are two cashier, one for regular customers,
the other one for “fast” customers (i.e. for the ones that have a
small number of objects to buy). The supermarket is modeled by the
following class:

#define SLOW_CASHIER    0
#define FAST_CASHIER    1
class Supermarket {
	...
public:
	Supermarket();
	int wait_for_paying(int nobjects);
	void exit_supermarket(int cashier);
} sm;

The wait_for_paying() takes as input the number of objects to buy. If
the number of objects does not exceed 5, then the customer tries to
use the fast cashier, otherwise it uses the slow cashier. If the
selected cashier is occupied, then it blocks waiting for its
turn. However, if the queue on the slow cashier is empty, the slow
cashier can exceptionally serve one fast customer from the fast queue.
Each customer is modeled by a thread with the following code:

void *thread(void *arg)
{
	int cashier;
	int n = (int) arg;                 //number of objects
	cashier = sm.wait_for_paying(n);
	<pay>
	sm.exit_supermarket(cashier);
}

Write the class internal data structures, the constructor and the two
member functions.
 
