Problem Statement
A
Definition
- Class:
- Supply
- Method:
- newFactory
- Parameters:
- String[], String[]
- Returns:
- int[]
- Method signature:
- int[] newFactory(String[] factories, String[] stores)
- (be sure your method is public)
Notes
- The location of the new factory must have integral coordinates.
- There may be multiple factories or stores at the same location.
- The constraints ensure that the return is unique.
Constraints
- stores will contain between 1 and 10 elements, inclusive.
- factories will contain between 1 and 4 elements, inclusive.
- Each X and Y in stores and factories will be between 0 and 10, inclusive.
- Each CAPACITY and DEMAND will be between 1 and 10, inclusive.
- There will be no extraneous leading zeros or extra spaces in either input.
- The total DEMAND will exceed the total CAPACITY.
- The location providing the minimum cost will be unique, and there will be no other locations that have costs within 1E-3*C of that minimum.
Examples
{"4 0 10"}
{"5 0 7","10 0 8"}
Returns: { 10, 0 }
There are two stores, with demands of 7 and 8. The single existing factory has a capacity of 10, so our new factory must have a capacity of 5. The best place to put the factory is (10,0), the same spot as the store. Then, we have to ship 3 units from the existing factory to (10,0), and 7 units to (5,0). Thus, our total cost is 7*1*C + 3*6*C = 25*C.
{"0 0 1"}
{"5 5 7","10 10 8","10 0 5"}
Returns: { 7, 6 }
Notice that the optimal factory placement is not always at the same location as a store. The total cost here is about 92.485*C.
{"0 0 10","0 10 10","10 0 10","10 10 10"}
{"0 0 8", "1 1 8", "2 2 4", "3 3 9", "4 4 9", "5 5 8", "6 6 1", "7 7 5", "8 8 2", "9 9 10"}
Returns: { 3, 3 }
{"0 0 1"}
{"10 10 10"}
Returns: { 10, 10 }
{"0 0 10","1 1 10","1 0 10","0 1 10"}
{"0 10 9", "0 9 10", "0 8 10", "1 10 10", "1 9 10", "1 8 10", "2 10 10", "2 9 10", "2 8 10", "3 10 10"}
Returns: { 2, 10 }
{"0 0 10","5 9 1","9 5 1"}
{"5 9 6", "9 5 6", "8 8 1"}
Returns: { 8, 8 }
{"3 3 10","10 7 7"}
{"6 2 10","2 6 2","7 1 9"}
Returns: { 7, 1 }
{"8 1 7","7 4 7"}
{"4 2 9","6 0 8","5 10 6"}
Returns: { 4, 2 }
{"7 3 6","8 5 9"}
{"1 1 4","1 4 4","4 1 9"}
Returns: { 1, 1 }
{"7 5 7","5 3 3"}
{"4 2 8","9 10 10","5 2 6"}
Returns: { 9, 10 }
{"1 1 8","9 8 7"}
{"4 5 3","1 9 6","9 10 9"}
Returns: { 9, 10 }
{"7 1 7","7 4 7","1 6 7","6 4 1"}
{"0 8 7","5 5 1","4 1 8","10 0 10","0 2 8","2 1 4","4 9 10","4 7 6","7 8 2","9 4 6"}
Returns: { 3, 4 }
{"0 7 5","4 2 5","10 1 7","6 0 1"}
{"0 6 10","6 6 9","9 10 2","3 9 5","3 3 5","2 7 2","6 3 9","8 4 3","4 7 4","7 9 5"}
Returns: { 5, 7 }
{"6 6 9","2 5 8","10 4 5","8 0 6"}
{"4 8 3","3 1 6","8 2 6","1 10 9","5 0 8","4 5 10","9 8 2","1 7 8","3 4 8","0 1 2"}
Returns: { 3, 4 }
{"3 0 7","5 6 6","7 9 3","1 9 3"}
{"2 0 7","10 1 9","2 7 8","4 1 10","0 0 1","1 10 10","0 7 6","9 1 2","3 0 7","1 5 5"}
Returns: { 4, 1 }
{"10 5 2","2 5 9","4 8 4","7 8 1"}
{"7 6 7","10 4 5","3 7 3","9 1 10","1 2 9","2 2 5","10 3 1","8 2 9","0 2 2","4 7 7"}
Returns: { 8, 2 }
{"4 4 2","6 3 1","1 2 7","1 3 10"}
{"1 5 9","10 6 2","4 2 1","2 3 9","2 7 6","2 1 1","5 8 2","10 6 1","1 0 5","3 8 7"}
Returns: { 2, 7 }
{"4 10 7","8 10 2","0 5 3","5 10 8"}
{"4 3 4","4 3 2","1 0 4","3 0 3","4 9 9","8 7 4","10 8 8","5 5 2","0 10 5","6 2 9"}
Returns: { 5, 3 }
{"4 2 6","3 5 2","10 7 4","1 8 6"}
{"4 8 10","3 5 8","7 6 8","6 7 4","6 7 2","7 9 7","9 4 8","10 4 2","7 9 1","9 8 10"}
Returns: { 7, 7 }
{"0 2 3","10 10 9","4 1 1","8 2 2"}
{"6 7 4","0 5 8","9 7 5","1 0 4","4 6 10","2 5 4","4 6 3","7 6 7","2 1 4","0 6 4"}
Returns: { 4, 6 }
{"4 0 1","3 1 4","6 0 4","7 3 9"}
{"7 2 8","5 2 4","5 1 2","7 2 9","0 3 1","3 7 6","1 1 2","2 4 7","1 0 2","3 9 1"}
Returns: { 2, 4 }
{"2 7 8","8 9 5","10 8 6","6 10 4"}
{"4 1 3","4 1 3","7 0 1","2 10 6","4 10 2","7 10 5","5 1 5","0 6 9","9 0 9","5 9 5"}
Returns: { 5, 1 }
{"8 8 1","8 9 7","3 7 1","5 6 6"}
{"2 9 10","4 0 10","0 6 1","0 9 6","9 0 10","0 8 2","7 6 6","4 9 7","8 9 2","0 10 10"}
Returns: { 2, 9 }
{"8 8 8","4 5 2","7 2 8","8 3 8"}
{"7 3 3","1 3 5","3 6 8","7 2 7","9 0 4","2 5 10","3 9 10","1 8 3","4 0 10","7 2 4"}
Returns: { 2, 5 }
{"10 6 2","0 1 7","8 5 6","5 2 7"}
{"7 3 1","6 5 9","9 1 5","6 10 8","3 2 10","2 0 3","3 8 5","10 4 2","10 5 7","3 2 6"}
Returns: { 6, 5 }
{"6 4 1","0 10 5","9 1 6","3 9 1"}
{"1 3 3","10 4 3","2 9 7","7 3 6","2 3 8","1 0 7","2 10 1","4 8 5","4 6 3","6 4 5"}
Returns: { 2, 3 }
{"4 6 8", "8 9 5", "6 3 9", "4 6 10"}
{"8 7 3","8 7 4", "6 2 2","6 7 8", "9 0 9","5 7 3","10 7 1","9 0 4", "10 1 6", "9 1 10"}
Returns: { 9, 0 }
{"9 2 10","2 6 10","2 6 10","8 2 10"}
{"2 8 6","3 7 6","9 8 4","9 7 8","9 4 4","7 3 4","1 0 7","10 1 5","4 3 9","2 8 10"}
Returns: { 4, 3 }
{"0 6 10","3 6 10","8 5 10","3 6 10"}
{"5 10 1","8 8 7","4 6 3","1 0 9","8 8 7","7 5 3","1 0 6","9 5 2","8 8 8","8 8 10"}
Returns: { 8, 8 }
{"0 6 10","3 6 10","8 5 10","3 6 10"}
{"7 10 2","8 8 7","4 6 3","1 0 9","8 8 7","7 5 2","1 0 6","9 5 2","8 8 8","8 8 10"}
Returns: { 8, 8 }
{"8 3 10","8 3 8","8 3 8","8 3 10"}
{"2 7 7","6 3 3","0 10 7","8 3 4","4 4 4","0 10 6","2 7 5","1 5 7","8 3 4","2 7 10"}
Returns: { 0, 10 }
{"0 2 10","5 6 8","5 6 10","0 2 10"}
{"2 5 1","1 6 6","9 10 4","7 7 8","10 4 4","3 2 4","7 0 8","8 9 3","4 3 9","2 8 6"}
Returns: { 7, 0 }
{"10 7 9","2 4 10","3 2 10","3 2 10"}
{"2 9 9","1 10 8","0 2 6","3 7 6","0 4 4","0 4 5","10 10 7","7 2 9","9 8 1","9 9 3"}
Returns: { 2, 9 }
{"0 10 10","6 2 10","6 2 10","5 2 10"}
{"3 3 3","3 0 8","1 5 7","4 1 3","4 10 3","3 0 8","4 0 3","1 5 10","6 3 7","1 5 10"}
Returns: { 1, 5 }
{"2 8 10","0 1 9","6 4 10","4 8 10"}
{"8 10 9","8 5 2","5 4 7","6 6 7","9 10 3", "6 8 7","5 2 6","6 9 2","6 3 9","10 10 9"}
Returns: { 9, 10 }
{"6 10 3","1 5 10","0 5 7","5 7 10"}
{"0 3 3","7 9 4","5 6 1","2 6 2","9 2 3","10 9 9","8 6 8","7 4 7","9 9 10","6 8 8"}
Returns: { 9, 9 }
{"10 9 3","1 2 10","1 1 10","4 2 10"}
{"4 3 3","7 5 9","9 1 9","9 4 9","9 6 7","8 7 1","8 0 6","0 6 2","9 0 6","7 2 4"}
Returns: { 9, 1 }
{"2 5 9","5 9 8","9 0 6","0 5 9"}
{"1 1 9","9 10 6","9 8 5","7 0 7","9 0 3","6 5 6","10 4 6","8 10 6","3 7 6","1 4 2"}
Returns: { 9, 8 }
{"3 1 4","4 2 5","7 1 10","3 7 8"}
{"8 6 7","7 9 3","1 4 7","7 10 5","6 8 2","0 1 1","5 10 5","10 8 3","1 9 6","2 1 9"}
Returns: { 7, 9 }
{"3 6 9","5 1 9","0 5 4","0 9 7"}
{"10 6 2","2 4 7","10 5 7","6 10 8","10 8 10","3 7 7","7 3 6","1 8 5","6 0 4","9 1 7"}
Returns: { 10, 6 }
{"10 9 3","0 5 2","10 8 6","4 10 10"}
{"5 4 4","8 8 2","7 0 7","5 9 2","1 10 6","6 5 4","7 9 8","10 6 7","7 5 8","2 1 7"}
Returns: { 6, 5 }
{"9 0 7","1 0 3","7 5 8","1 6 2"}
{"0 5 8","0 6 8","3 6 3","4 6 10","10 5 5","6 5 3","2 2 9","9 6 1","5 0 8","1 7 7"}
Returns: { 1, 5 }
{"7 3 9","3 0 1","10 5 5","5 7 2"}
{"0 9 4","4 9 9","4 6 7","1 4 10","0 8 7","10 4 2","2 0 10","9 1 10","6 9 2","0 7 6"}
Returns: { 2, 6 }
{"0 0 10","0 0 10","0 0 10","0 0 10"}
{"10 0 10","10 0 10","10 0 10", "0 10 10","0 10 10","0 10 10", "10 10 10","10 10 10","10 10 10","4 7 10"}
Returns: { 10, 10 }
{"5 5 1"}
{"10 0 10","10 0 10","10 0 10", "0 10 10","0 10 10","0 10 10", "10 10 10","10 10 10","0 0 10","0 0 10"}
Returns: { 5, 5 }