HELPBOB  Help Bob
Bob loves Pizza but is always out of money. One day he reads in the newspapers that his favorite pizza restaurant, Alfredo's Pizza Restaurant, is running a competition: they will donate a big pizza to the first person who will tell them the lowest price per area that can be achieved by buying any of the pizzas at most once. "That task is easy!", thinks Bob, "For each pizza I just calculate the average price and the lowest quotient will be the answer.".
Unfortunately the problem is a bit more complicated: with some pizzas Alberto gives out discount coupons for getting another pizza cheaper and even worse, those coupons can be combined. The pizzas have to be bought one after the other, and it is not possible to use a coupon to get a discount retrospectively for a pizza which has already been bought. Can you help Bob to become the first to solve this task and to get a pizza for free?
Input
The input file contains several test cases. Each test case starts with a number m, the number of pizzas Alfredo offers. Input is terminated by m=0. Otherwise, 1 ≤ m ≤ 15. Then follow m lines describing the pizzas. Each of those following lines describes pizza i (1 ≤ i ≤ m) and starts with 3 integer numbers p_{i}, a_{i} and n_{i} specifying the price of the pizza, its area and the number of discount coupons you get when buying it, 1 ≤ p_{i} ≤ 10000, 1 ≤ a_{i} ≤ 10000 and 0 ≤ n_{i} < m. Then follow n_{i} pairs of integer numbers x_{i,j} and y_{i,j} specifying the index x_{i,j} (1 ≤ x_{i,j} ≤ m, x_{i,j} ≠ i) of the pizza you get a discount coupon for and the discount in percentage terms y_{i,j} (1 ≤ y_{i,j} ≤ 50) you get when buying pizza x_{i,j}. You may assume that for each i the values x_{i,j} are pairwise distinct.
Output
For each test case print one line containing the lowest price per area that can be achieved by buying any of the pizzas at most once. Round this number to 4 places after the decimal point. Note that you can combine an arbitrary number of discount coupons: for a pizza with price 10 and two rabatt coupons for that pizza with a 50 and a 20 on it, you would only have to pay 10 * 0.8 * 0.5 = 4 monetary units.
Example
Input: 1 80 30 0 2 200 100 1 2 50 200 100 0 5 100 100 2 3 50 2 50 100 100 1 4 50 100 100 1 2 40 600 600 1 5 10 1000 10 1 1 50 0 Output: 2.6667 1.5000 0.5333
hide comments
rks14:
20190915 10:03:19
*props to the setter*


AMIT KUMAR YADAV:
20170401 05:11:04
Happy to help Bob :) 

dev:
20160520 16:14:51
(2^n)*n^2 with getchar_unlocked !! Last edit: 20160520 16:15:35 

xxbloodysantaxx:
20151212 20:41:22
Round Down to 4 digits . I didn't read that !!


Sudharsansai:
20150322 06:13:42
O(n*n*(2^n)) with printf and scanf in C++ can get AC easily Last edit: 20150322 06:15:05 

Varun Vohra:
20141028 15:43:28
my O(n * n * 2^n) complexity giving TLE..


Aditya Paliwal:
20141015 23:23:17
Got AC! Had to write iteratively rather than recursively. Learnt sooo much from this problem :D AWESOME! Also can anybody tell me how best solution is 1 sec? I barely made it thought the time limit! Last edit: 20141016 00:05:27 

PubLic_AvenGeR:
20140122 10:01:06
Nice Problem !!


Ghost Of Perdition:
20131231 03:30:54
can anyone please explain the third case in the sample


Ravi Kiran:
20110915 05:20:21
@Adrian:

Added by:  Adrian Kuegel 
Date:  20080712 
Time limit:  1.783s 
Source limit:  50000B 
Memory limit:  1536MB 
Cluster:  Cube (Intel G860) 
Languages:  All except: ERL JSRHINO NODEJS PERL6 VB.NET 
Resource:  University of Ulm Local Contest 2008 