Statistics

Problem Statement for "Towers"

Problem Statement

As a serious strategy-games player, you decided to solve one of the most common problems - attacking your opponent's guard towers.

Before the attack, you've got myUnits soldiers. Each soldier in a single round inflicts 1 hit point of damage to one of the towers.
Your opponent doesn't have any soldiers. However, he's got numT towers with hpT hit points each. Each tower kills attackT of your soldiers per round.

The course of one round:
1. Each soldier in your army attacks a tower of your choice for 1 hit point of damage. When a tower loses all its hit points, it is destroyed. You can pick the tower independently for each soldier.
2. Your opponent attacks. He will kill k*attackT of your soliders, where k is the number of remaining towers.

Your task is to destroy all the towers. If it is possible, return the minimum number of rounds you need to do this. Otherwise return -1.

Definition

Class:
Towers
Method:
attack
Parameters:
int, int, int, int
Returns:
int
Method signature:
int attack(int myUnits, int hpT, int attackT, int numT)
(be sure your method is public)

Notes

  • More than one soldier can attack the same tower in the same round.

Constraints

  • myUnits will be between 1 and 1000000, inclusive.
  • hpT, attackT, numT will each be between 1 and 10000, inclusive.

Examples

  1. 13

    2

    3

    8

    Returns: 2

    Round 1: - Your soldiers destroy 6 towers leaving one tower with 1 hit point and one tower with 2 hit points. - Your opponent attacks and kills 2*3=6 of your soldiers. Round 2: - You have 7 soldiers remaining, which is more than enough to take out the 3 hit points of the remaining towers.

  2. 10

    6

    8

    2

    Returns: 2

  3. 10

    6

    9

    2

    Returns: -1

  4. 1

    1

    1

    1

    Returns: 1

  5. 10000

    10

    2

    2789

    Returns: 10

  6. 1000000

    10000

    10000

    10000

    Returns: -1

  7. 10000

    2

    1

    9999

    Returns: 8

  8. 1000000

    10000

    111

    999

    Returns: 36

  9. 1000000

    10000

    1

    10000

    Returns: 301

  10. 1000000

    1271

    1271

    1271

    Returns: 5

  11. 10001

    10000

    1

    100

    Returns: 493

  12. 140

    10000

    1

    1

    Returns: -1

  13. 141

    10000

    1

    1

    Returns: 137

  14. 547

    10000

    1

    2

    Returns: 39

  15. 546

    10000

    1

    2

    Returns: 39

  16. 1733

    547

    1

    2

    Returns: 1

  17. 2

    1

    1

    1

    Returns: 1

  18. 2

    1

    1

    3

    Returns: 2

  19. 6181

    1

    1

    10000

    Returns: 6

  20. 6180

    1

    1

    10000

    Returns: -1

  21. 6200

    1

    1

    10000

    Returns: 4

  22. 500001

    2

    1

    5000

    Returns: 1

  23. 3661

    1

    2

    5000

    Returns: 4

  24. 632709

    8018

    1

    7097

    Returns: 336

  25. 661962

    7039

    1

    7926

    Returns: 307

  26. 263221

    7878

    1

    2978

    Returns: 326

  27. 853699

    8090

    1

    9543

    Returns: 451

  28. 573713

    8659

    1

    6189

    Returns: 336

  29. 882173

    9380

    1

    9133

    Returns: 326

  30. 339724

    9906

    1

    3423

    Returns: 343

  31. 863490

    9316

    1

    8981

    Returns: 356

  32. 404662

    8186

    1

    4488

    Returns: 314

  33. 896257

    8420

    1

    9797

    Returns: 310

  34. 582915

    5727

    32

    1413

    Returns: 92

  35. 395954

    157

    3242

    2638

    Returns: 2

  36. 441796

    1372

    2370

    454

    Returns: 4

  37. 651367

    5807

    4010

    202

    Returns: 7

  38. 708288

    93

    5424

    7744

    Returns: 2

  39. 986052

    918

    348

    2362

    Returns: 9

  40. 313551

    189

    7303

    1700

    Returns: 2

  41. 312910

    754

    6009

    461

    Returns: 2

  42. 194927

    397

    7279

    516

    Returns: 2

  43. 33210

    246

    9980

    138

    Returns: 2

  44. 471282

    2742

    1043

    377

    Returns: -1

  45. 412113

    782

    2732

    649

    Returns: -1

  46. 15749

    18

    6472

    877

    Returns: -1

  47. 320828

    2090

    4618

    205

    Returns: -1

  48. 813199

    1900

    5808

    539

    Returns: -1

  49. 923549

    150

    4716

    6346

    Returns: -1

  50. 105293

    1526

    8551

    79

    Returns: -1

  51. 299879

    504

    8434

    628

    Returns: -1

  52. 229925

    1250

    5029

    221

    Returns: -1

  53. 263400

    3618

    1673

    149

    Returns: -1

  54. 500551

    1139

    100

    1718

    Returns: 15

  55. 519634

    9717

    98

    548

    Returns: 23

  56. 684597

    4044

    7

    3682

    Returns: 34

  57. 334999

    9423

    231

    245

    Returns: 31

  58. 960860

    9966

    183

    759

    Returns: 26

  59. 236718

    6895

    1

    2851

    Returns: 244

  60. 346910

    9979

    2

    2470

    Returns: 268

  61. 376391

    2548

    9

    2496

    Returns: 38

  62. 760428

    7346

    76

    1059

    Returns: 27

  63. 432552

    5134

    35

    1058

    Returns: 38

  64. 550847

    687

    21

    5004

    Returns: 43

  65. 952800

    6639

    6

    4844

    Returns: 144

  66. 904770

    2807

    12

    5093

    Returns: 82

  67. 850997

    4832

    54

    1429

    Returns: 11

  68. 154315

    674

    1

    5896

    Returns: 56

  69. 272141

    4269

    33

    756

    Returns: 42

  70. 821589

    5414

    210

    848

    Returns: 18

  71. 855366

    3384

    5

    5286

    Returns: 29

  72. 386321

    9011

    1

    2614

    Returns: 72

  73. 506179

    2060

    75

    1401

    Returns: 15

  74. 95561

    9586

    1

    976

    Returns: 297

  75. 118901

    4026

    1

    1766

    Returns: 109

  76. 446778

    706

    4

    8728

    Returns: 65

  77. 768248

    2322

    2

    7876

    Returns: 30

  78. 871905

    2414

    160

    1582

    Returns: 11

  79. 663952

    1315

    34

    3402

    Returns: 44

  80. 531054

    1219

    4

    7819

    Returns: 68

  81. 890578

    8811

    712

    409

    Returns: 15

  82. 135163

    6164

    8

    619

    Returns: 118

  83. 930726

    3364

    27

    3229

    Returns: 62

  84. 995064

    10000

    1

    10000

    Returns: 794

  85. 926842

    9075

    1

    9780

    Returns: 899

  86. 926841

    9075

    1

    9780

    Returns: -1

  87. 903429

    8486

    1

    9860

    Returns: 920

  88. 903428

    8486

    1

    9860

    Returns: -1

  89. 1000000

    3

    10000

    10000

    Returns: 1

  90. 1

    1

    1

    2

    Returns: -1

  91. 1

    1

    2

    1

    Returns: 1

  92. 1

    1

    2

    2

    Returns: -1

  93. 1

    2

    1

    1

    Returns: -1

  94. 1

    2

    1

    2

    Returns: -1

  95. 1

    2

    2

    1

    Returns: -1

  96. 1

    2

    2

    2

    Returns: -1

  97. 2

    1

    1

    2

    Returns: 1

  98. 2

    1

    2

    1

    Returns: 1

  99. 2

    1

    2

    2

    Returns: 1

  100. 2

    2

    1

    1

    Returns: 1

  101. 2

    2

    1

    2

    Returns: -1

  102. 2

    2

    2

    1

    Returns: 1

  103. 2

    2

    2

    2

    Returns: -1

  104. 8

    8

    1

    2

    Returns: 3

  105. 2

    3

    1

    2

    Returns: -1

  106. 1

    10

    10

    10

    Returns: -1

  107. 2

    3

    2

    1

    Returns: -1

  108. 11

    7

    8

    2

    Returns: 2

  109. 99

    100

    1

    1

    Returns: 2

  110. 10

    2

    2

    10

    Returns: -1

  111. 9

    5

    1

    4

    Returns: 3

  112. 5

    10

    5

    1

    Returns: -1

  113. 2

    1

    2

    3

    Returns: -1

  114. 100

    101

    10

    3

    Returns: 6


This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2024, TopCoder, Inc. All rights reserved.
This problem was used for: