
Refer to the original paper for more details:
Daily-Deal Selection for Revenue Maximization - CIKM 2012

Usage:
java DealSelector <total coupon budget> <maximum number of deals allowed per market> <coupon divider> <deals file> <output file>

Total coupon budget: total number of coupons to be allocated across merchants and markets.

Maximum number of deals allowed per market: the diversity constraint

Coupon divider: used to bucketize coupons in 10s, 100s, etc. Sacrifices optimality for speed.

Deals file: Input file with the deals for each market.
One line per market. Each line is tab separated. Each field in the line is of the format C:B, where
C is the number of coupons that this deal is expected to sell and B is the benefit per coupon. The total
revenue is thus C*B.

Output file: File where the allocation scheme is written (allocation of coupons to markets and to 
merchants within each market).


DealSelector.java: 
The main class of the package. Selects which deals (merchants) have to be activated from each market.

MerchantSelector.java: 
Implemnts the inner recursion of the nested dynamic programming for deal selection. 
It determines which deals (merchants) need to be activated for a specific market, for different coupon budgets.

Deal.java: 
A class representing a deal object

Pair.java: 
A comparable container for two values

