Problem Statement
In each round of attacks, the following happens:
1. Each soldier from the first group attacks a single wooden tower and inflicts 1 hit point of damage. You can pick the tower independently for each soldier.
2. Each solider from the second group attacks a single stone tower and inflicts 1 hit point of damage. You can pick the tower independently for each soldier.
3. Your opponent attacks. The wooden towers will kill w*attackT of your soldiers from the first group, where w is the number of remaining wooden towers, and the stone towers will kill s*attackT of your soldiers from the second group, where s is the number of remaining stone towers.
Return the minimum number of rounds required to destroy all the towers, or return -1 if it is impossible.
Definition
- Class:
- EnemyTowers
- Method:
- attack
- Parameters:
- int, int, int, int, int
- Returns:
- int
- Method signature:
- int attack(int myUnits, int hpT, int attackT, int numWodT, int numStoT)
- (be sure your method is public)
Notes
- More than one soldier can attack the same tower.
Constraints
- myUnits will be between 1 and 1000000000, inclusive.
- hpT, attackT, numWodT, numStoT will be each between 1 and 40000, inclusive.
Examples
7
2
1
2
3
Returns: 2
Put 3 soldiers in the first group and 4 soldiers in the second group. Round 1: First group: Your soldiers destroy one wooden tower and leave the second tower with 1 hit point. Second group: Your soldiers destroy two stone towers. The one remaining wooden tower kills one of your soldiers in the first group, and the one remaining stone tower kills one of your soldiers in the second group. Round 2: First group: You have 2 soldiers remaining in the first group, and that's more than enough to destroy the last wooden tower. Second group: You have 3 soldiers remaining in the second group, and that's also more than enough to destroy the last stone tower.
120
10
40000
6
6
Returns: 1
Towers are really powerful but luckily you have exactly enough soldiers to destroy them before they attack.
119
10
40000
6
6
Returns: -1
200
50
3
10
5
Returns: 6
Put 126 soldiers in the first group and 74 soldiers in the second group.
1000000000
40000
5681
40000
40000
Returns: 15
1000000000
40000
5682
40000
40000
Returns: -1
1000000000
40000
40000
40000
40000
Returns: -1
1000000000
16405
40000
40000
40000
Returns: 5
1000000000
16406
40000
40000
40000
Returns: -1
1000000000
40000
40000
40000
450
Returns: -1
1000000000
40000
40000
449
40000
Returns: 7
1000000000
40000
40000
20226
20224
Returns: -1
1000000000
40000
40000
20223
20226
Returns: 6
15960245
40000
1
40000
40000
Returns: -1
15960246
40000
1
40000
40000
Returns: 1648
2000000
10000
3
10000
10000
Returns: -1
79999
1
40000
40000
40000
Returns: -1
80000
1
40000
40000
40000
Returns: 1
1
1
1
1
1
Returns: -1
2
1
1
1
1
Returns: 1
566
40000
1
1
1
Returns: 265
565
40000
1
1
1
Returns: -1
251082761
6321
39957
7307
37932
Returns: -1
251082762
6321
39957
7307
37932
Returns: 4
723344864
31765
21532
38298
2997
Returns: -1
723344865
31765
21532
38298
2997
Returns: 10
671716922
23944
26905
39218
4760
Returns: -1
671716923
23944
26905
39218
4760
Returns: 8
115935662
3363
19624
29267
10347
Returns: -1
115935663
3363
19624
29267
10347
Returns: 4
633551945
38483
21394
3744
28051
Returns: -1
633551946
38483
21394
3744
28051
Returns: 12
196215157
17449
13330
5428
14234
Returns: -1
196215158
17449
13330
5428
14234
Returns: 9
802412978
33056
20327
22310
23076
Returns: -1
802412979
33056
20327
22310
23076
Returns: 9
801950219
29442
18748
14607
35762
Returns: -1
801950220
29442
18748
14607
35762
Returns: 9
423357568
18704
18265
30045
6820
Returns: -1
423357569
18704
18265
30045
6820
Returns: 8
716286293
39797
24694
9816
23740
Returns: -1
716286294
39797
24694
9816
23740
Returns: 10
9918873
12094
4
8494
37014
Returns: -1
9918874
12094
4
8494
37014
Returns: 534
8851541
18779
10
16183
4479
Returns: -1
8851542
18779
10
16183
4479
Returns: 372
10331734
20454
6
10006
19739
Returns: -1
10331735
20454
6
10006
19739
Returns: 526
33998805
33147
8
27098
39439
Returns: -1
33998806
33147
8
27098
39439
Returns: 592
19536493
38655
4
19391
30545
Returns: -1
19536494
38655
4
19391
30545
Returns: 834
23066289
36448
5
31608
22741
Returns: -1
23066290
36448
5
31608
22741
Returns: 732
18936461
29745
7
17533
24285
Returns: -1
18936462
29745
7
17533
24285
Returns: 645
4134259
11755
1
18106
20201
Returns: -1
4134260
11755
1
18106
20201
Returns: 894
10703057
28847
9
17214
3977
Returns: -1
10703058
28847
9
17214
3977
Returns: 425
3678282
1901
8
8455
22354
Returns: -1
3678283
1901
8
8455
22354
Returns: 113
13053345
34937
1
35774
34248
Returns: 2036
14911911
38094
1
37999
38598
Returns: 2150
14970055
38854
1
39791
36347
Returns: 2064
13243161
39967
1
31153
35255
Returns: 2223
15357711
39918
1
38674
38385
Returns: 2230
402
55
1
4
53
Returns: -1
403
55
1
4
53
Returns: 36
693
55
1
4
53
Returns: 6
352
66
1
37
8
Returns: -1
353
66
1
37
8
Returns: 26
495
66
1
37
8
Returns: 8
781
79
1
28
64
Returns: -1
782
79
1
28
64
Returns: 33
1307
79
1
28
64
Returns: 7
1089
39
1
97
91
Returns: -1
1090
39
1
97
91
Returns: 26
1952
39
1
97
91
Returns: 5
490
64
1
7
57
Returns: -1
491
64
1
7
57
Returns: 30
836
64
1
7
57
Returns: 6
404
64
1
52
1
Returns: -1
405
64
1
52
1
Returns: 36
468
64
1
52
1
Returns: 11
703
26
1
89
62
Returns: -1
704
26
1
89
62
Returns: 17
1234
26
1
89
62
Returns: 4
438
27
1
85
7
Returns: -1
439
27
1
85
7
Returns: 22
464
27
1
85
7
Returns: 10
808
88
1
11
79
Returns: -1
809
88
1
11
79
Returns: 40
1580
88
1
11
79
Returns: 6
739
47
1
38
77
Returns: -1
740
47
1
38
77
Returns: 25
1057
47
1
38
77
Returns: 7
2
2
2
2
2
Returns: -1
1
2
2
2
2
Returns: -1
2
1
2
2
2
Returns: -1
1
1
2
2
2
Returns: -1
2
2
1
2
2
Returns: -1
1
2
1
2
2
Returns: -1
2
1
1
2
2
Returns: -1
1
1
1
2
2
Returns: -1
2
2
2
1
2
Returns: -1
1
2
2
1
2
Returns: -1
2
1
2
1
2
Returns: -1
1
1
2
1
2
Returns: -1
2
2
1
1
2
Returns: -1
1
2
1
1
2
Returns: -1
2
1
1
1
2
Returns: -1
1
1
1
1
2
Returns: -1
2
2
2
2
1
Returns: -1
1
2
2
2
1
Returns: -1
2
1
2
2
1
Returns: -1
1
1
2
2
1
Returns: -1
2
2
1
2
1
Returns: -1
1
2
1
2
1
Returns: -1
2
1
1
2
1
Returns: -1
1
1
1
2
1
Returns: -1
2
2
2
1
1
Returns: -1
1
2
2
1
1
Returns: -1
2
1
2
1
1
Returns: 1
1
1
2
1
1
Returns: -1
2
2
1
1
1
Returns: -1
1
2
1
1
1
Returns: -1
2
1
1
1
1
Returns: 1
1
1
1
1
1
Returns: -1
14877
551
86
18
9
Returns: 1
43
8
3
3
6
Returns: 3
13
3
13
2
3
Returns: -1
4553
55
9
92
157
Returns: 9
7850
206
3857
30
9
Returns: 2
531144140
60
49
85
597
Returns: 1
722639
898
26980
196
658
Returns: -1
1000000000
40000
100
1
40000
Returns: 2
97030319
39222
37805
4
3738
Returns: 3
1000000000
40000
1
40000
40000
Returns: 4
999999999
39999
39999
39999
39999
Returns: -1
1000000000
400
2
456
65
Returns: 1
500000000
10000
10000
10000
10000
Returns: 1
100000
10
10
10
10
Returns: 1
1000000000
1
1
1
1
Returns: 1
1000000000
111
111
222
222
Returns: 1
345243216
35000
7
12555
36987
Returns: 6
1000000000
9997
39999
39999
39999
Returns: 1
1000000000
1
1
40000
40000
Returns: 1
1000000000
43
4
664
345
Returns: 1
1000
4000
1
3
7
Returns: 49
200
1
1
1
1
Returns: 1
1000000000
40000
1000
9999
9192
Returns: 1
1000000000
1000
500
5000
5000
Returns: 1
5
3
2
1
1
Returns: -1
1000000000
10
1
100
100
Returns: 1
12
3
2
1
5
Returns: 3
70000
1
1
40000
40000
Returns: 2
1000000000
40000
40000
40000
39999
Returns: -1
599990990
100
40000
40000
4000
Returns: 1
7
3
2
1
2
Returns: 2
12
3
2
3
3
Returns: 2
4
4
1
1
1
Returns: -1