Problem Statement
However, the only florist in town sells these flowers in packets which are represented by
Teddy and Tracy wish to buy some flowers and arrange them into a rectangular grid. This grid must be arranged such that each cell contains exactly one flower, and any two cells which share an edge must contain different kinds of flowers. Additionally, Teddy and Tracy must use all the flowers they buy.
Teddy and Tracy love square-shaped grids, so they wish to buy a set of packets such that they can arrange the flowers into the most square-like grid possible. More precisely, they wish to arrange the flowers into an R x C grid, where R and C are positive integers, such that |R-C| (|R-C| denotes the absolute value of R-C) is minimized. Return this minimum absolute value, or -1 if no valid arrangement exists.
Definition
- Class:
- BuyingFlowers
- Method:
- buy
- Parameters:
- int[], int[]
- Returns:
- int
- Method signature:
- int buy(int[] roses, int[] lilies)
- (be sure your method is public)
Constraints
- roses and lilies will contain the same number of elements, between 1 and 16, inclusive.
- Each element of roses and lilies will be between 0 and 10000, inclusive.
- The total number of flowers in each packet represented by roses and lilies will be greater than 0.
Examples
{2, 4}
{4, 2}
Returns: 1
Buying all the packets to get 6 roses and 6 lilies, they can create a 3 x 4 grid with the following arrangement: RLRL LRLR RLRL The difference of the height and the width of this arrangement is 1.
{2, 7, 3}
{3, 4, 1}
Returns: 0
Buying the first and the third packets, they can create the following square arrangement: RLR LRL RLR
{4, 5, 2, 1}
{6, 10, 5, 9}
Returns: -1
No valid grid can be created.
{1, 208, 19, 0, 3, 234, 1, 106, 99, 17}
{58, 30, 3, 5, 0, 997, 9, 615, 77, 5}
Returns: 36
{0}
{1}
Returns: 0
{9909, 9942, 9943, 9963, 9900, 9955, 9931, 9904, 9911, 9906, 9977, 9926, 9965, 9926, 9909, 9998}
{9936, 9901, 9972, 9912, 9904, 9957, 9940, 9927, 9959, 9963, 9909, 9944, 9962, 9930, 9960, 9905}
Returns: 1
{9909, 9942, 9943, 9963, 9900, 9955, 9931, 9904, 9911, 9906, 9977, 9926, 9965, 9926, 9909, 9998}
{9909, 9942, 9943, 9963, 9900, 9955, 9931, 9904, 9911, 9906, 9977, 9926, 9965, 9926, 9909, 9998}
Returns: 0
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
Returns: 0
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
Returns: 0
{10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000}
{10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000}
Returns: 0
{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}
{16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}
Returns: 1
{3234, 632, 6}
{21, 5342, 42}
Returns: -1
{499}
{498}
Returns: 996
{342, 343, 192, 999, 231, 555}
{512, 981, 211, 888, 231, 429}
Returns: 1
{1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192}
{1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192}
Returns: 0
{7, 5, 4, 1, 7, 6, 3, 7, 5, 9, 7, 7, 9, 3, 3, 1}
{1, 9, 9, 7, 1, 1, 3, 5, 1, 2, 1, 4, 9, 9, 9, 6}
Returns: 0
{5132, 1405, 6260, 2708, 9286, 8699, 8931, 6471, 443, 6768, 285, 3070, 6048, 9450, 8171}
{189, 6774, 4919, 8482, 6664, 942, 9115, 5271, 2515, 1736, 4840, 9287, 3715, 2670, 2435}
Returns: 504
{8587, 7801, 3839, 6429, 2092, 3125, 5128, 1023, 1178, 5571, 9373, 1463, 223, 5421}
{913, 9976, 7192, 9268, 4895, 5674, 5933, 7418, 6371, 1204, 1516, 8106, 6043, 803}
Returns: 391
{9643, 9838, 9908, 9449, 9920, 9661, 9767, 9960, 9409, 9094, 9565, 9675, 9214}
{9818, 9828, 9581, 9941, 9979, 9104, 9935, 9977, 9030, 9771, 9657, 9936, 9325}
Returns: 14
{8227, 8286, 8843, 8257, 8991, 8487, 8447, 8251, 8936, 8367, 8913, 8703}
{8327, 8322, 8149, 8893, 8349, 8715, 8063, 8178, 8649, 8356, 8509, 8753}
Returns: 650
{10000}
{10000}
Returns: 35
{0}
{10000}
Returns: -1
{9973, 9967, 9949, 9941, 9931, 9929, 9923, 9907, 9901, 9887, 9883, 9871, 9859, 9857, 9851, 9839}
{9973, 9967, 9949, 9941, 9931, 9929, 9923, 9907, 9901, 9887, 9883, 9871, 9859, 9857, 9851, 9839}
Returns: 0
{4986, 4983, 4974, 4970, 4965, 4964, 4961, 4953, 4950, 4943, 4941, 4935, 4929, 4928, 4925, 4919}
{4987, 4984, 4975, 4971, 4966, 4965, 4962, 4954, 4951, 4944, 4942, 4936, 4930, 4929, 4926, 4920}
Returns: 9838
{7517, 6389, 6353, 1867, 2879, 397, 7583, 3709, 2053, 9439, 6079, 439, 7759, 5711, 6737, 6793}
{9829, 2647, 5639, 4787, 1259, 4999, 5087, 3217, 8647, 6131, 1031, 59, 1459, 269, 71, 6599}
Returns: 53
{4057, 3697, 6211, 7691, 4349, 3911, 1693, 7019, 881, 8447, 4919, 9161, 4229, 9679, 5981, 1453}
{61, 9643, 6781, 9013, 1987, 9907, 2341, 853, 6067, 1129, 8521, 5209, 1553, 8681, 2089, 3361}
Returns: 10
{2503, 9041, 1381, 4663, 3037, 3461, 9749, 1619, 9811, 1993, 953, 4051, 1699, 4517, 3253, 1861}
{4177, 557, 1039, 6781, 7867, 1153, 5171, 4019, 2609, 3733, 61, 1931, 191, 5, 5843, 409}
Returns: 0
{6101, 4919, 5387, 6997, 6229, 2381, 9337, 6067, 4877, 449, 8111, 4289, 2531, 1579, 3917, 7451}
{73, 2663, 1621, 8059, 4217, 4523, 2273, 4637, 6199, 97, 7187, 6563, 7247, 701, 7247, 3529}
Returns: 33
{5981, 389, 967, 2447, 523, 7793, 6329, 5711, 5651, 4519, 607, 8941, 3833, 4871, 3541, 4003}
{5347, 5711, 2267, 251, 8263, 5021, 2351, 4513, 2503, 157, 1451, 313, 8513, 6343, 4027, 1861}
Returns: 26
{4157, 2683, 2089, 5009, 839, 9187, 1171, 6907, 1171, 9743, 5861, 5483, 1931, 157, 211, 7919}
{3251, 2633, 5479, 1693, 5483, 8609, 6803, 8753, 5923, 5881, 6343, 1811, 2543, 8419, 4091, 4517}
Returns: 11143
{8929, 6827, 251, 101, 3251, 9239, 4253, 4831, 8999, 8147, 8317, 8677, 5519, 8747, 3733, 9613}
{9209, 47, 9011, 4723, 5743, 3041, 1009, 2003, 9811, 4967, 4253, 79, 3467, 6269, 2011, 2473}
Returns: 1
{757, 2411, 283, 4327, 1759, 4789, 7103, 8501, 587, 5483, 4241, 6427, 1619, 8837, 3271, 997}
{6011, 2377, 3371, 2063, 3229, 2081, 1861, 3061, 7699, 3877, 727, 9133, 673, 3019, 1723, 9323}
Returns: 449
{3259, 2207, 3691, 2777, 4783, 8783, 9137, 5689, 1657, 3461, 97, 3691, 97, 3467, 2377, 6217}
{3631, 6343, 6047, 7589, 6217, 8623, 8599, 4021, 229, 6761, 3251, 8597, 367, 2713, 7877, 1237}
Returns: 67
{2711, 9521, 4457, 8263, 5413, 3643, 1427, 7673, 4957, 1579, 1627, 5167, 2789, 1811, 1709, 7121}
{5881, 5501, 4799, 2383, 1499, 3491, 4229, 1877, 719, 8269, 8179, 8821, 8839, 6073, 7669, 1709}
Returns: 239
{6977, 5879, 5693, 1361, 6991, 5113, 2671, 9293, 6089, 8513}
{409, 2099, 4231, 2083, 1061, 2663, 5563, 8821, 6659, 1451}
Returns: -1
{2503, 5347, 9323, 1051, 2137, 8929, 1741, 1733, 8861, 4001}
{311, 3089, 7873, 3457, 4933, 4957, 9421, 8329, 1613, 5521}
Returns: 99
{3931, 2243, 8363, 6091, 4801, 6961, 6571, 8389, 3023, 3391}
{233, 3343, 6607, 9767, 2099, 9491, 5741, 4283, 8969, 1979}
Returns: -1
{6211, 9521, 5639, 1531, 557, 8573, 7039, 167, 4007, 6361}
{5849, 8819, 9397, 1613, 2239, 1579, 6299, 9551, 7639, 83}
Returns: -1
{547, 5171, 3529, 7537, 2243, 3413, 4153, 8731, 8563, 3221}
{919, 2087, 379, 6977, 4021, 1051, 2789, 9109, 1319, 7549}
Returns: -1
{5519, 4871, 3541, 2221, 7057, 6361, 1583, 3541, 5981, 9871}
{1123, 4003, 5077, 2357, 1787, 8039, 6361, 3701, 3889, 2267}
Returns: -1
{7673, 5231, 4831, 5431, 131, 9781, 6959, 3049, 8867, 5903}
{8537, 1783, 8821, 2213, 4457, 3137, 9349, 6619, 4507, 2617}
Returns: -1
{6529, 6121, 4423, 9643, 6277, 6827, 4783, 2879, 983, 9533}
{5711, 6211, 2087, 1031, 1933, 2341, 8369, 6659, 3203, 7229}
Returns: -1
{379, 1873, 9721, 9467, 4547, 1559, 2683, 1319, 8831, 7907}
{1693, 2657, 1489, 6703, 47, 8429, 1097, 4909, 9199, 2351}
Returns: -1
{1783, 4951, 6343, 4327, 3607, 9011, 4463, 2137, 2887, 8467}
{7159, 3529, 8081, 4019, 577, 353, 6133, 3539, 1867, 2293}
Returns: -1
{434, 220, 731, 613, 420, 730, 582, 162, 658, 585, 940, 48, 322}
{328, 148, 84, 365, 446, 687, 456, 934, 626, 363, 35, 435, 500}
Returns: 29
{753, 309, 7, 368, 931, 441, 940, 14, 406, 713, 744, 988, 875}
{402, 925, 167, 451, 248, 495, 951, 332, 861, 397, 371, 317, 684}
Returns: 4
{349, 32, 719, 136, 884, 824, 445, 891, 192, 376, 332, 484, 390}
{738, 197, 486, 78, 424, 241, 4, 592, 44, 604, 87, 995, 288}
Returns: 1
{300, 745, 11, 969, 429, 360, 1, 500, 496, 885, 324, 941, 128}
{868, 669, 812, 352, 411, 550, 550, 897, 981, 326, 138, 337, 918}
Returns: 148
{182, 293, 6, 530, 581, 306, 275, 592, 628, 704, 304, 629, 204}
{800, 867, 880, 93, 995, 748, 762, 808, 100, 173, 710, 2, 70}
Returns: 2
{43, 329, 561, 380, 599, 743, 673, 605, 625, 606, 264, 900, 550}
{892, 956, 854, 873, 512, 654, 92, 744, 747, 440, 492, 861, 600}
Returns: 2
{945, 34, 310, 947, 457, 706, 628, 18, 86, 228, 113, 112, 185}
{739, 70, 801, 991, 621, 693, 300, 475, 919, 164, 482, 11, 909}
Returns: 11
{581, 803, 753, 443, 403, 698, 829, 714, 998, 286, 772, 978, 656}
{858, 206, 770, 322, 392, 861, 393, 193, 204, 366, 239, 856, 193}
Returns: 9
{510, 373, 675, 873, 634, 609, 677, 387, 404, 80, 438, 233, 146}
{436, 520, 918, 414, 528, 129, 973, 298, 451, 717, 511, 196, 262}
Returns: 8
{716, 562, 501, 924, 108, 363, 297, 783, 237, 931, 744, 914, 671}
{148, 994, 109, 382, 141, 897, 254, 411, 311, 782, 540, 636, 433}
Returns: 92
{57, 5}
{28, 36}
Returns: -1
{23, 4}
{24, 78}
Returns: 46
{83, 1}
{91, 61}
Returns: -1
{94, 47}
{85, 17}
Returns: -1
{41, 70}
{94, 88}
Returns: -1
{56, 50}
{97, 50}
Returns: 0
{8, 31}
{78, 8}
Returns: -1
{11, 93}
{20, 68}
Returns: -1
{51, 48}
{56, 74}
Returns: -1
{5, 32}
{4, 88}
Returns: 0
{8554, 8977, 4296, 1400, 1191, 1641, 2605, 614, 907, 3890, 2362}
{5864, 9593, 3855, 4765, 5868, 1497, 4603, 318, 6937, 888, 7435}
Returns: -1
{6841, 2219, 6921, 6756, 9943, 9750, 1676, 3799, 5586, 6582}
{9128, 9883, 7982, 6671, 7876, 6939, 3638, 5135, 830, 6000}
Returns: -1
{7351, 6775, 6207, 2116, 2643, 4056, 3072, 2961, 993}
{3960, 6748, 7834, 6180, 21, 4590, 6123, 9771, 2619}
Returns: -1
{6274, 5357, 9201, 1755, 1592, 3536, 4778, 5820}
{475, 8416, 956, 7657, 768, 8307, 4432, 6976}
Returns: -1
{6776, 7075, 1032, 9848, 6388, 8378, 160}
{3136, 2564, 6340, 3157, 3507, 8815, 9280}
Returns: -1
{2478, 1442, 990, 8031, 3197, 2582}
{1567, 4327, 8403, 8395, 2744, 5711}
Returns: -1
{6052, 9864, 4018, 485, 3192}
{7146, 7560, 577, 6994, 301}
Returns: -1
{8955, 7155, 3437, 7871}
{9847, 2947, 7730, 5015}
Returns: -1
{8579, 208, 6457}
{9569, 4592, 6006}
Returns: -1
{2152, 2511}
{333, 6907}
Returns: -1
{5486, 5289, 5801, 5223, 5637, 5480, 5822, 5776, 5942, 5694, 5388, 5976, 5979, 5354}
{5398, 5674, 5167, 5734, 5531, 5593, 5330, 5584, 5214, 5523, 5095, 5117, 5983, 5096}
Returns: 230
{5160, 5945, 5743, 5999, 5587, 5896, 5222, 5224, 5376, 5396, 5352, 5670, 5090, 5092}
{5999, 5421, 5798, 5397, 5447, 5965, 5131, 5979, 5911, 5462, 5915, 5125, 5337, 5010}
Returns: 20
{5594, 5320, 5458, 5106, 5265, 5553, 5105, 5852, 5449, 5679, 5429, 5826, 5075, 5133}
{5848, 5517, 5578, 5847, 5291, 5376, 5244, 5090, 5342, 5728, 5421, 5253, 5190, 5336}
Returns: 6
{5730, 5879, 5698, 5676, 5199, 5508, 5782, 5816, 5061, 5240, 5021, 5511, 5919, 5802}
{5689, 5347, 5287, 5537, 5216, 5865, 5385, 5507, 5242, 5981, 5950, 5936, 5709, 5371}
Returns: 0
{5541, 5251, 5708, 5271, 5130, 5758, 5299, 5681, 5267, 5081, 5850, 5328, 5321, 5871}
{5191, 5593, 5025, 5880, 5940, 5312, 5770, 5156, 5178, 5507, 5016, 5772, 5488, 5966}
Returns: 10
{5708, 5550, 5337, 5249, 5801, 5397, 5872, 5284, 5508, 5171, 5965, 5775, 5604, 5815}
{5455, 5278, 5038, 5647, 5871, 5063, 5879, 5163, 5728, 5649, 5319, 5906, 5156, 5335}
Returns: 124
{5030, 5997, 5653, 5738, 5547, 5343, 5339, 5700, 5740, 5563, 5984, 5248, 5086, 5302}
{5375, 5690, 5469, 5831, 5320, 5860, 5830, 5191, 5275, 5709, 5354, 5003, 5359, 5026}
Returns: 17
{5261, 5867, 5713, 5291, 5864, 5367, 5029, 5411, 5710, 5720, 5464, 5802, 5283, 5448}
{5403, 5369, 5102, 5778, 5412, 5924, 5961, 5732, 5784, 5791, 5924, 5059, 5853, 5630}
Returns: 17
{5063, 5212, 5656, 5324, 5079, 5722, 5968, 5296, 5089, 5349, 5059, 5151, 5070, 5523}
{5953, 5705, 5324, 5708, 5427, 5426, 5839, 5839, 5350, 5800, 5571, 5486, 5944, 5847}
Returns: -1
{5546, 5797, 5830, 5961, 5361, 5838, 5637, 5792, 5560, 5605, 5088, 5001, 5307, 5148}
{5152, 5377, 5023, 5458, 5434, 5347, 5166, 5861, 5774, 5005, 5700, 5476, 5158, 5624}
Returns: 84
{89, 74, 41, 78, 79, 2, 96, 3, 18, 3, 94, 46, 26, 15, 19, 86}
{16, 95, 37, 41, 86, 20, 77, 87, 73, 80, 30, 65, 87, 83, 35, 76}
Returns: 0
{9, 76, 54, 89, 30, 2, 44, 48, 5, 91, 94, 83, 6, 13, 70, 22}
{9, 7, 64, 47, 79, 93, 34, 4, 73, 16, 69, 12, 99, 4, 88, 9}
Returns: 0
{32, 94, 50, 62, 97, 94, 10, 2, 85, 56, 86, 43, 22, 56, 66, 31}
{15, 82, 78, 46, 27, 64, 50, 0, 81, 20, 12, 80, 76, 52, 41, 9}
Returns: 0
{46, 43, 71, 43, 90, 34, 98, 27, 90, 36, 71, 12, 44, 89, 95, 11}
{71, 25, 57, 98, 90, 7, 50, 23, 79, 14, 3, 56, 66, 97, 65, 64}
Returns: 0
{40, 88, 60, 30, 22, 10, 58, 65, 46, 81, 29, 42, 70, 77, 53, 93}
{2, 62, 43, 44, 21, 93, 67, 1, 59, 23, 57, 77, 20, 74, 41, 12}
Returns: 0
{9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999}
{9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999}
Returns: 4
{9557, 9509, 9993, 9362, 9156, 9615, 9682, 9026, 9863, 9555, 9444, 9226}
{9451, 9676, 9064, 9362, 9980, 9915, 9661, 9047, 9614, 9832, 9570, 9039}
Returns: 27
{9218, 9746, 9071, 9026, 9512, 9080, 9714, 9069, 9941, 9707, 9783, 9449}
{9674, 9466, 9475, 9537, 9373, 9271, 9763, 9825, 9299, 9180, 9187, 9279}
Returns: 46
{9095, 9201, 9326, 9061, 9033, 9896, 9100, 9604, 9994, 9524, 9630, 9858}
{9956, 9344, 9279, 9249, 9403, 9063, 9699, 9077, 9881, 9526, 9967, 9254}
Returns: 523
{9798, 9082, 9431, 9097, 9614, 9971, 9729, 9062, 9524, 9407, 9123, 9557}
{9656, 9224, 9513, 9650, 9100, 9143, 9861, 9056, 9839, 9492, 9305, 9594}
Returns: 54
{9907, 9004, 9024, 9788, 9531, 9991, 9395, 9681, 9073, 9826, 9130, 9040}
{9149, 9859, 9102, 9673, 9619, 9225, 9583, 9275, 9801, 9096, 9277, 9901}
Returns: 54
{1, 208, 19, 0, 3, 234, 1, 106, 99, 17 }
{58, 30, 3, 5, 0, 997, 9, 615, 77, 5 }
Returns: 36
{2, 7, 3 }
{3, 4, 1 }
Returns: 0
{10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 1, 10000 }
{10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 1, 10000 }
Returns: 0
{4, 5, 2, 1 }
{6, 10, 5, 9 }
Returns: -1
{10000, 10000, 430, 860 }
{10000, 10000, 470, 740 }
Returns: 0
{768, 435, 42, 1, 76, 87, 3324, 565, 5643, 5234, 23, 34, 9978, 78, 67, 55 }
{78, 9, 65, 34, 5342, 43, 1324, 32, 4, 234, 5, 4354, 2314, 234, 32, 4 }
Returns: 234
{9999, 9998, 9997, 9996, 9995 }
{9999, 9998, 9997, 9996, 9995 }
Returns: 8
{5000, 5000, 5000, 5000, 5000, 5000, 5000, 5000, 5000, 5000, 5000, 5000, 5000, 5000, 5000 }
{1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000 }
Returns: -1
{10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000 }
{10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000 }
Returns: 0
{1, 1, 1 }
{1, 3, 2 }
Returns: 1
{10000, 10000, 10000, 10000, 10000, 1000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000 }
{10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 1000, 10000, 10000, 10000, 10000, 10000, 10000 }
Returns: 0
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }
{9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 }
Returns: -1
{0 }
{1 }
Returns: 0
{3 }
{4 }
Returns: 6
{1, 208, 234, 1, 106, 99, 17, 54, 1, 10000, 9999, 190, 0, 3 }
{58, 30, 997, 9, 615, 77, 5, 0, 53, 9999, 9009, 3, 5, 0 }
Returns: 8
{4, 4 }
{4, 5 }
Returns: 0
{8226, 5077, 9693, 7372, 5517, 5689, 6908, 9672, 7288, 6108, 9975, 5605, 8773, 9855, 8532, 7851 }
{8233, 9847, 5592, 5055, 9115, 9672, 8491, 9095, 7846, 7384, 5872, 7942, 5992, 7473, 8655, 7331 }
Returns: 112
{3, 5 }
{5, 3 }
Returns: 0
{3 }
{3 }
Returns: 1