Problem Statement
The road has D candidate positions for planting apple trees. These positions are numbered 0 through D-1, from left to right. The distance between position x and position y is |x-y| meters (|x-y| denotes the absolute value of x-y). She wants to plant N apple trees numbered from 0 to N-1 in different positions. The trees may be planted in any order. The i-th tree won't grow if there are other trees which are closer than r[i] meters. In other words, if i and j are distinct, the distance between the i-th tree and the j-th tree must be at least max(r[i],r[j]) meters.
Return the number of ways to plant all apple trees modulo 1,000,000,007.
Definition
- Class:
- AppleTrees
- Method:
- theCount
- Parameters:
- int, int[]
- Returns:
- int
- Method signature:
- int theCount(int D, int[] r)
- (be sure your method is public)
Constraints
- D will be between 1 and 100,000, inclusive.
- r will contain between 1 and 40 elements, inclusive.
- Each element of r will be between 1 and 40, inclusive.
Examples
10
{40}
Returns: 10
There are 10 candidate positions for the only tree.
4
{1, 1, 1, 1}
Returns: 24
Trees must be planted in different positions, so the number of ways to plant all trees is 4! = 24.
4
{1, 1, 2}
Returns: 4
The following 4 ways are possible: Plant the 0th tree in position 0, the 1st tree in position 1, and the 2nd tree in position 3. Plant the 0th tree in position 1, the 1st tree in position 0, and the 2nd tree in position 3. Plant the 0th tree in position 2, the 1st tree in position 3, and the 2nd tree in position 0. Plant the 0th tree in position 3, the 1st tree in position 2, and the 2nd tree in position 0.
58
{5, 8}
Returns: 2550
47
{4, 8, 9}
Returns: 28830
100000
{21, 37, 23, 13, 32, 22, 9, 39}
Returns: 923016564
100000
{40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40}
Returns: 24331430
100000
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40}
Returns: 714711938
100000
{8, 27, 12, 9, 33, 38, 10, 28, 4, 2, 30, 40, 2, 17, 32, 24, 25, 13, 26, 21, 25, 25, 35, 13, 30, 18, 6, 38, 12, 20, 23, 24, 15, 6, 10, 32, 28, 7, 24, 19}
Returns: 218519605
100000
{7, 37, 16, 21, 38, 25, 34, 22, 36, 16, 11, 22, 26, 17, 26, 34, 20, 21, 23, 15, 32, 33, 30, 1, 27, 20, 23, 15, 16, 1, 3, 9, 29, 7, 21, 1, 28, 32, 27, 3}
Returns: 407032791
100000
{13, 13, 19, 12, 26, 22, 30, 22, 17, 35, 1, 8, 22, 35, 24, 10, 7, 32, 28, 28, 40, 2, 28, 25, 10, 32, 26, 39, 37, 11, 38, 15, 21, 23, 8, 28, 9, 30, 11, 7}
Returns: 848904165
100000
{20, 26, 26, 37, 14, 36, 40, 12, 17, 12, 14, 1, 33, 35, 11, 27, 21, 33, 34, 21, 22, 16, 16, 38, 6, 6, 39, 14, 1, 26, 31, 20, 11, 30, 6, 39, 33, 26, 10, 11}
Returns: 500775678
100000
{29, 10, 9, 4, 38, 32, 6, 38, 11, 6, 33, 13, 26, 25, 21, 39, 10, 27, 31, 10, 6, 11, 3, 4, 17, 8, 9, 16, 7, 24, 39, 22, 12, 35, 20, 40, 21, 3, 40, 39}
Returns: 303932276
100000
{28, 15, 15, 15, 12, 38, 24, 4, 10, 29, 37, 34, 19, 2, 13, 3, 40, 35, 1, 15, 15, 34, 25, 27, 27, 16, 8, 26, 15, 21, 37, 7, 34, 8, 25, 35, 32, 29, 37, 7}
Returns: 475613033
100000
{25, 1, 2, 34, 40, 26, 9, 15, 20, 28, 8, 18, 4, 5, 30, 18, 18, 14, 20, 18, 5, 3, 27, 2, 35, 32, 32, 35, 6, 37, 28, 37, 36, 15, 2, 37, 24, 4, 12, 31}
Returns: 467164612
100000
{16, 21, 23, 23, 2, 15, 19, 13, 22, 2, 5, 25, 30, 27, 3, 20, 39, 6, 17, 11, 4, 1, 3, 2, 35, 6, 8, 13, 8, 17, 18, 11, 24, 36, 10, 40, 37, 21, 22, 34}
Returns: 556856111
100000
{34, 10, 3, 34, 37, 10, 37, 38, 1, 39, 17, 8, 6, 34, 30, 31, 14, 30, 22, 11, 19, 14, 5, 23, 36, 12, 37, 36, 11, 33, 22, 29, 38, 36, 32, 6, 16, 38, 15, 38}
Returns: 169047545
100000
{14, 36, 14, 35, 28, 30, 30, 3, 28, 27, 35, 16, 10, 40, 13, 25, 11, 5, 27, 15, 22, 23, 18, 37, 10, 31, 21, 2, 20, 11, 30, 12, 20, 9, 15, 36, 32, 38, 3, 21}
Returns: 273170335
78368
{6, 40, 5, 18, 13, 15, 2, 36, 9, 24, 33, 2, 39, 35, 1, 5, 12, 31, 21, 13, 5, 29, 39, 39, 16, 8, 16, 35, 22, 13, 34, 32, 22, 29, 31, 38, 29, 20, 10, 6}
Returns: 950014493
61572
{37, 26, 23, 28, 5, 39, 21, 23, 8, 9, 36, 28, 33, 22, 38, 37, 23, 18, 37, 7, 12, 40, 27, 27, 10, 10, 36, 6, 34, 20, 13, 21, 17, 24, 27, 22, 24, 17, 34, 8}
Returns: 620297046
10643
{34, 26, 38, 37, 3, 12, 29, 7, 13, 31, 1, 17, 39, 4, 33, 34, 13, 14, 34, 23, 40, 20, 29, 9, 40, 17, 29, 29, 35, 38, 33, 1, 4, 25, 14, 33, 27, 36, 13, 32}
Returns: 559510586
91691
{30, 21, 40, 7, 12, 15, 11, 21, 30, 38, 23, 7, 28, 25, 21, 23, 15, 36, 30, 13, 27, 27, 26, 3, 2, 32, 5, 17, 15, 9, 28, 24, 14, 8, 19, 3, 40, 30, 28, 7}
Returns: 11981090
7613
{2, 38, 24, 10, 13, 18, 29, 8, 31, 5, 2, 23, 10, 17, 14, 2, 16, 2, 17, 32, 7, 9, 23, 9, 29, 2, 32, 2, 21, 1, 17, 22, 33, 1, 32, 29, 4, 39, 18, 23}
Returns: 472755403
50808
{31, 18, 36, 19, 17, 7, 40, 15, 39, 9, 18, 31, 32, 32, 36, 28, 3, 25, 5, 9, 18, 20, 4, 38, 37, 8, 35, 15, 16, 23, 36, 3, 21, 1, 15, 6, 30, 7, 2, 10}
Returns: 104316779
67448
{17, 26, 14, 33, 18, 22, 39, 10, 27, 15, 8, 35, 6, 3, 21, 25, 16, 9, 15, 37, 3, 38, 36, 5, 35, 34, 20, 31, 17, 15, 33, 1, 3, 29, 4, 30, 10, 13, 21, 37}
Returns: 687159416
31016
{2, 3, 40, 21, 35, 11, 38, 8, 40, 7, 33, 21, 6, 40, 34, 3, 30, 25, 18, 6, 6, 18, 8, 38, 24, 39, 10, 38, 22, 8, 38, 18, 23, 25, 17, 9, 18, 27, 35, 23}
Returns: 474911888
43211
{33, 20, 27, 21, 9, 36, 8, 23, 27, 10, 9, 20, 18, 31, 36, 30, 25, 31, 37, 10, 18, 20, 30, 14, 31, 4, 21, 10, 32, 29, 27, 11, 10, 23, 39, 3, 30, 4, 4, 34}
Returns: 258238152
13031
{28, 31, 28, 33, 8, 35, 19, 35, 12, 13, 9, 7, 14, 2, 19, 12, 19, 7, 16, 35, 27, 31, 25, 10, 36, 38, 14, 40, 22, 1, 3, 19, 26, 39, 1, 8, 26, 24, 11, 21}
Returns: 923431277
100000
{32, 33, 36, 39, 31, 36, 40, 31, 37, 40, 36, 35, 31, 35, 39, 33, 33, 40, 37, 31, 32, 33, 34, 32, 31, 33, 37, 34, 39, 35, 37, 38, 38, 39, 36, 38, 35, 40, 36, 36}
Returns: 674882745
100000
{37, 37, 35, 40, 37, 31, 38, 40, 37, 34, 31, 34, 36, 38, 33, 37, 33, 40, 36, 31, 40, 37, 38, 40, 34, 31, 31, 35, 31, 37, 36, 40, 31, 38, 35, 33, 33, 37, 39, 33}
Returns: 787805446
100000
{31, 36, 34, 35, 35, 36, 31, 38, 37, 37, 33, 40, 36, 36, 36, 39, 35, 34, 36, 32, 33, 35, 31, 35, 40, 38, 37, 33, 33, 39, 35, 34, 35, 31, 33, 35, 34, 33, 32, 40}
Returns: 11104825
100000
{39, 33, 38, 33, 33, 31, 34, 34, 34, 33, 31, 33, 37, 36, 34, 33, 33, 39, 36, 38, 31, 34, 36, 38, 35, 36, 34, 38, 34, 33, 33, 40, 36, 36, 36, 37, 34, 34, 34, 38}
Returns: 969369096
100000
{36, 39, 33, 40, 39, 33, 40, 37, 35, 31, 34, 31, 31, 37, 35, 36, 33, 40, 32, 35, 33, 32, 33, 32, 40, 33, 34, 38, 39, 31, 37, 37, 34, 34, 32, 36, 38, 35, 36, 32}
Returns: 105350535
897
{14, 21, 8, 1, 13, 33, 9, 5, 36, 24, 14, 4, 32, 4, 26, 40, 22, 10, 23, 18, 19, 9, 17, 33, 11, 5, 35, 26, 23, 1, 8, 10, 21, 14, 18, 14, 9, 24, 14, 27}
Returns: 169905204
1052
{26, 28, 15, 12, 2, 39, 31, 26, 24, 5, 9, 5, 17, 35, 4, 8, 37, 19, 17, 28, 19, 24, 13, 11, 35, 19, 29, 7, 38, 32, 8, 5, 34, 34, 14, 33, 21, 33, 39, 12}
Returns: 60826073
1107
{35, 38, 9, 36, 12, 35, 15, 24, 33, 26, 6, 1, 37, 3, 24, 27, 33, 36, 26, 1, 32, 12, 38, 29, 4, 19, 31, 8, 10, 36, 3, 3, 36, 24, 18, 39, 7, 26, 28, 16}
Returns: 809382457
1082
{21, 17, 29, 1, 34, 1, 25, 8, 19, 11, 27, 33, 37, 20, 1, 2, 11, 21, 32, 37, 24, 30, 25, 29, 28, 4, 11, 27, 29, 34, 17, 31, 19, 4, 30, 8, 3, 18, 11, 38}
Returns: 516588995
906
{29, 25, 18, 33, 29, 22, 18, 33, 7, 9, 13, 38, 9, 27, 28, 19, 2, 5, 18, 13, 19, 34, 1, 32, 6, 5, 28, 16, 15, 22, 3, 7, 4, 31, 37, 16, 4, 10, 7, 3}
Returns: 525897281
1041
{21, 21, 40, 32, 10, 11, 14, 29, 2, 12, 2, 40, 35, 17, 18, 31, 37, 9, 4, 34, 6, 4, 16, 3, 18, 19, 7, 27, 5, 38, 15, 36, 9, 28, 16, 28, 15, 14, 27, 40}
Returns: 724118712
1040
{37, 23, 22, 9, 6, 2, 6, 18, 32, 34, 39, 19, 4, 25, 11, 39, 30, 24, 11, 17, 16, 5, 26, 1, 29, 38, 13, 29, 36, 24, 31, 6, 15, 27, 18, 25, 12, 29, 28, 1}
Returns: 105692396
1060
{39, 40, 7, 5, 28, 31, 32, 1, 32, 34, 2, 6, 21, 7, 38, 7, 28, 10, 36, 9, 20, 5, 36, 14, 34, 15, 3, 13, 9, 40, 13, 7, 12, 21, 23, 1, 17, 1, 22, 38}
Returns: 828406613
1104
{35, 18, 8, 15, 40, 17, 38, 16, 19, 20, 1, 35, 15, 6, 8, 27, 28, 33, 35, 6, 28, 17, 29, 29, 25, 39, 3, 31, 6, 23, 12, 20, 18, 39, 23, 35, 22, 21, 27, 5}
Returns: 400387332
1129
{36, 1, 8, 13, 21, 37, 21, 37, 36, 10, 19, 37, 17, 38, 15, 27, 38, 39, 30, 39, 27, 23, 33, 14, 19, 15, 36, 1, 10, 27, 31, 15, 22, 26, 10, 1, 40, 22, 8, 18}
Returns: 343828589
1
{20}
Returns: 1
11
{11, 7}
Returns: 0
72
{36, 22, 3}
Returns: 2240
71
{8, 27, 22, 15}
Returns: 1700
137
{15, 39, 7, 40, 19}
Returns: 2693732
154
{1, 27, 38, 27, 31, 2}
Returns: 110506944
195
{20, 15, 29, 32, 37, 22, 38}
Returns: 34611592
259
{38, 24, 39, 23, 37, 27, 29, 39}
Returns: 830755385
209
{8, 1, 12, 40, 19, 2, 20, 12, 33}
Returns: 257583360
152
{15, 38, 26, 13, 6, 11, 3, 13, 15, 5}
Returns: 231996288
1558
{40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40}
Returns: 0
1559
{40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40}
Returns: 0
1560
{40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40}
Returns: 0
1561
{40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40}
Returns: 799434881
1562
{40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40}
Returns: 776829897
12489
{35}
Returns: 12489
32298
{2}
Returns: 32298
75495
{17}
Returns: 75495
81800
{19}
Returns: 81800
85355
{9}
Returns: 85355
790
{19, 7, 4, 38, 3, 31, 9, 3, 25, 4, 40, 36, 14, 16, 38, 5, 2, 5, 31, 23, 35, 28, 33, 11, 1, 39, 24, 33, 34, 33, 28, 24, 4, 18, 18, 1, 27, 21, 20, 7}
Returns: 0
866
{35, 6, 5, 33, 22, 40, 18, 37, 39, 15, 12, 15, 36, 30, 4, 28, 21, 15, 36, 39, 1, 11, 3, 5, 19, 33, 33, 12, 28, 39, 1, 35, 22, 25, 13, 15, 36, 19, 12, 20}
Returns: 0
791
{34, 1, 22, 37, 20, 34, 1, 16, 7, 26, 31, 9, 11, 21, 20, 25, 8, 15, 31, 14, 2, 35, 29, 1, 36, 16, 21, 31, 34, 33, 15, 27, 38, 28, 10, 7, 26, 6, 11, 4}
Returns: 0
729
{18, 15, 10, 11, 24, 2, 10, 35, 2, 24, 12, 39, 11, 33, 19, 3, 8, 2, 34, 18, 8, 22, 13, 24, 30, 33, 27, 9, 6, 5, 15, 28, 20, 20, 24, 4, 38, 39, 2, 35}
Returns: 0
759
{10, 2, 5, 19, 27, 6, 2, 33, 40, 21, 3, 7, 3, 33, 39, 17, 28, 2, 34, 14, 1, 36, 16, 24, 26, 40, 27, 11, 34, 3, 33, 11, 11, 26, 11, 12, 5, 20, 29, 40}
Returns: 0
10
{40 }
Returns: 10
100000
{5, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40 }
Returns: 714711938
100000
{2, 28, 15, 21, 10, 5, 39, 39, 3, 25, 26, 26, 2, 28, 2, 12, 36, 23, 28, 37, 32, 5, 23, 34, 13, 23, 22, 37, 39, 16, 8, 7, 12, 19, 30, 33, 28, 20, 36, 15 }
Returns: 993035722
99997
{11, 17, 24, 10, 19, 14, 28, 28, 12, 14, 15, 15, 11, 17, 11, 21, 25, 12, 17, 26, 21, 14, 12, 23, 22, 12, 11, 26, 28, 25, 17, 16, 21, 28, 19, 22, 17, 29, 25, 24 }
Returns: 996441691