Problem Statement
You just found a gold mine that contains goldInGround units of gold. Currently, you don't have any units of gold. You have miningTime minutes of time. Once that time elapses, you want to have as much gold as possible.
You can mine the gold yourself, at the rate of one unit of gold per minute. At the beginning of each minute, you can also hire as many additional workers as you wish. Each worker requires an immediate one-time payment of hiringCost gold. (You can only hire a worker if you have enough gold to pay them.) A hired worker mines gold at the same rate as you. All gold mined by the workers belongs to you.
Return the maximum amount of gold you can have after miningTime minutes.
Definition
- Class:
- GoldMining
- Method:
- maxProfit
- Parameters:
- long, long, long
- Returns:
- long
- Method signature:
- long maxProfit(long goldInGround, long miningTime, long hiringCost)
- (be sure your method is public)
Constraints
- goldInGround will be between 1 and 10^18, inclusive.
- miningTime will be between 1 and 10^6, inclusive.
- hiringCost will be between 1 and 10^18, inclusive.
Examples
470000
1000000
50
Returns: 470000
There are 470,000 units of gold in the ground and you have 1,000,000 minutes. In that time you can mine all the gold on your own, there is no need to waste some of it on hiring help.
470000
100000
1234567890123456
Returns: 100000
There are 470,000 units of gold in the ground and you only have 100,000 minutes to mine it. Sadly, workers are prohibitively expensive and thus your best bet is still to work on your own the whole time.
470000
100000
57000
Returns: 100000
This gets a bit more tricky: After 57,000 minutes you already have enough gold to hire an extra worker, but you should not do so. Regardless of when exactly you hire the worker, it will never pay off. You will earn more just by mining alone.
470000
100000
42000
Returns: 116000
As the workers become cheaper, it becomes a good idea to hire one and end with more than 100,000 units of gold.
567890
4
1
Returns: 8
One of multiple optimal strategies looks as follows: First minute: Only you mine. You gain 1 gold. Hire a worker, pay 1 gold. You now have 0 gold. Second minute: You mine together with 1 worker. You gain 2 gold. Hire two workers, pay 2 gold. You now have 0 gold again. Third minute: You mine together with 3 workers. You gain 4 gold. Hire one more worker, pay 1 gold. You now have 3 gold left. Fourth minute: You mine together with 4 workers. You gain 5 gold, so you end with 3+5 = 8 gold.
234567
47
10
Returns: 215
Here you will eventually hire a bunch of extra workers. Sometimes you will even hire two new workers at the same time.
300
47
10
Returns: 190
The mining time and the cost to hire the worker are the same as in the previous example, but now the total amount of gold in the ground is quite small. Note that this influences hiring decisions: it does not pay off to hire as many workers as in the previous example.
987654321098765432
100
3
Returns: 2731288513472
If the workers are really cheap, in mere 100 minutes we can mine an awful lot of gold.
151713147151608135
292265
20928
Returns: 5019710120
800703588685892536
24
1519
Returns: 24
372361468765144
335653
796
Returns: 371433369197268
14006779376578
155889
371196
Returns: 155889
893242112422040853
502740
1621
Returns: 890077464475233433
417195945882738841
878459
85577
Returns: 507559535
7
1
1
Returns: 1
882352940377020921
932034
283693
Returns: 1705608
52424973457907584
719397
64791
Returns: 888482114
517106323717774815
1
666945
Returns: 1
37783148103732654
446547
672693
Returns: 446547
794308468935233319
939765
21076
Returns: 746337200347261183
733049010439060832
930247
4
Returns: 733045857968659828
7137318
900172
154687
Returns: 5281074
23910873029815
52866
1
Returns: 23910420499654
595363686256173959
3363
949394
Returns: 3363
9
8
7
Returns: 8
1
1
29
Returns: 1
10
1
2
Returns: 1
73317
24
479436
Returns: 24
24299896
59
261745
Returns: 59
77310
48562
6
Returns: 77304
32668455100594471
598523
308
Returns: 32651430584719643
1
690621
24810
Returns: 1
875903200042123277
513022
161007885428476854
Returns: 513022
401576967683279578
127712
434810
Returns: 127712
20015399
31
172
Returns: 31
57210971239355263
102
129865
Returns: 102
674564836640031413
2
96
Returns: 2
3
8
4
Returns: 3
4
1
7
Returns: 1
18859634632697196
1322
6
Returns: 18759308906669088
15850277047606104
1
1
Returns: 1
693409749551919235
3259
31240
Returns: 3259
2772
581148
317469
Returns: 2772
1
232451
11400
Returns: 1
381346591079096429
11085
165
Returns: 370668173650536284
2001952
222150
921689
Returns: 222150
445823155279632758
125955
850947
Returns: 125955
3430
58207
917414
Returns: 3430
319653937293492634
986755
707911
Returns: 986755
564942263512621033
4405
776
Returns: 47112
96816400434
829213
81
Returns: 96806932668
26841735911425581
117
315619
Returns: 117
1
116202
1
Returns: 1
10
6
9
Returns: 6
134968361615629733
947174
752803169336389869
Returns: 947174
562319
227116
3
Returns: 562313
10
2
10
Returns: 2
6
1
10
Returns: 1
766131598630813559
103
3673
Returns: 103
1
5
1
Returns: 1
286797543104729
362
20665
Returns: 362
5138645452725880
160
641879
Returns: 160
419376399054523446
566126
886019
Returns: 566126
216179121847
1204
784406
Returns: 1204
799478844945878586
285694
166013
Returns: 285694
365056607413401509
3
782780
Returns: 3
1285725530
399195
158344
Returns: 485037
39820130506439976
835134
777725
Returns: 835134
131358880112929382
657885
1
Returns: 131358680433360676
447153714036928926
1882
846743
Returns: 1882
1
240070
794457
Returns: 1
937848312308021273
12
510914
Returns: 12
250251361832144075
207991
28
Returns: 250217545841410655
168033476619994187
855706
487727
Returns: 855706
9
2
2
Returns: 2
193843
505542
462650
Returns: 193843
1437536
60
156928
Returns: 60
690
409081
108
Returns: 690
9
3
9
Returns: 3
183925
553699
293879
Returns: 183925
298711611470926225
16240
1
Returns: 298693168962306353
407837520557692378
950648
650617663231695679
Returns: 950648
35080051512
597013
912228
Returns: 597013
96379162098709099
717661
227542
Returns: 1218075
206722797104706524
1
374329
Returns: 1
543621700182810
24890
1
Returns: 543599829841211
1088942597
617725
1240
Returns: 1086725477
412367812810
559313
14297
Returns: 396265301868
10380821
95497
725746
Returns: 95497
991846485005092162
942753
2691
Returns: 988775661409047412
962303204669202200
20897
65357
Returns: 20897
8541422642
36
582095
Returns: 36
5
9
10
Returns: 5
3
3
9
Returns: 3
248012495892251467
12
721746
Returns: 12
360184367354391
649382
65
Returns: 360148242840056
28900557351908195
8980
700271
Returns: 8980
9
8
10
Returns: 8
15892825862931
861897
829344
Returns: 861897
14318558
1
94494
Returns: 1
1
1
368938
Returns: 1
4183939
31513
3677
Returns: 2827126
982449
4293
558380
Returns: 4293
44775
41
539995
Returns: 41
87793390
22
4556
Returns: 22
8
1
2
Returns: 1
5
1
9
Returns: 1
462819247313323927
17808
501469
Returns: 17808
2227667788062
110712
7761
Returns: 2511360820
7
2
6
Returns: 2
1
580534
1
Returns: 1
650166809806686892
547488
901142026554305840
Returns: 547488
1616702399157435
2
861505
Returns: 2
634021667260990160
249947
504914
Returns: 249947
4358
827823
559562
Returns: 4358
8248521
1
599204
Returns: 1
11
4
4831
Returns: 4
633246294306777981
671652
27751
Returns: 185901082691076
152
887741
4312
Returns: 152
8
4
8
Returns: 4
12550870652
9
35776
Returns: 9
1777018925257142
305592
899
Returns: 1771427015533240
27889692488
12
46363
Returns: 12
775572732041986254
474121
558026
Returns: 474121
27671438654171694
21
11918
Returns: 21
8
6
1
Returns: 7
367211915621266493
8135
109708
Returns: 8135
17067506749
822613
994642
Returns: 822613
139165043676058735
101496
705047
Returns: 101496
559732720295214115
1512
289000
Returns: 1512
9
470
3
Returns: 9
900796855769723628
5
710
Returns: 5
5
10
9
Returns: 5
10
4
4
Returns: 4
799
391137
154000
Returns: 799
1015767586
2552
15
Returns: 1009305031
570620991588247182
654315
258713
Returns: 798736
949469610947879702
439851
518705
Returns: 439851
6
7
3
Returns: 6
575762043574601597
53
972518
Returns: 53
180437
46371
320430
Returns: 46371
7853509615965280
718289
437
Returns: 7848664613445424
138204116568409549
186
556070
Returns: 186
146070913512563227
938127
437311
Returns: 1001632
3
2
3
Returns: 2
203205637007492598
20751
39721
Returns: 20751
801157111890674314
637644
892605
Returns: 637644
3183908773
424009
640285
Returns: 424009
855303281278447416
58
431964
Returns: 58
8
6
9
Returns: 6
340342398809655738
33108
9933
Returns: 62564
32999
68863
17
Returns: 32999
225230658969459474
621459
790674
Returns: 621459
1
128654
56300
Returns: 1
838295739760618386
7
486768
Returns: 7
270675342008677857
810917
611113
Returns: 810917
34339595178
275399
671467
Returns: 275399
538837457874105051
411442
106266
Returns: 1108186
1
2
7
Returns: 1
393310512976406422
647257
426758
Returns: 647257
38350906486876537
1
588195
Returns: 1
1362
18
457
Returns: 18
694790714671120744
702046
966552
Returns: 702046
579221452012512576
119673
6
Returns: 579192366584842410
195207187212478802
952440
12
Returns: 195204726929105882
331613672399610811
821817
738991
Returns: 821817
27875266358430065
393708
638166
Returns: 393708
65112678585743810
93141
371828
Returns: 93141
123860762835112090
901989
53873
Returns: 207815408495
48274515
22220
50
Returns: 48164065
556495650696534001
13
611146
Returns: 13
33657517888457723
23
56144
Returns: 23
523157046148692058
863676
501039997086049038
Returns: 863676
184459664231695136
784
988889
Returns: 784
740241567076283183
1900
418246
Returns: 1900
487257357237951142
237379
61316
Returns: 639176
11773869
7
488772
Returns: 7
14623579298523999
145294
95
Returns: 14613858468412734
642797673379990706
8
16090
Returns: 8
5832731551445822
78731
5
Returns: 5832360495173737
254020334249692975
11853
854970
Returns: 11853
201322319550809672
640040
369712
Returns: 640040
719936497077489919
145847
779351
Returns: 145847
178748128324283041
17327
78
Returns: 177818460333186937
1533858220
3
830213
Returns: 3
772316261776456824
769906
137258
Returns: 7806108
2981937
385359
895745
Returns: 385359
372550565762212352
589458
204083
Returns: 861222
10
5
10
Returns: 5
17455
819574
381
Returns: 17455
6489961925
429136
35488
Returns: 1308367064
33354437553250
284148
841473
Returns: 284148
857120430601131396
112245
802639
Returns: 112245
120206877029944925
129166
355083
Returns: 129166
709693886506030576
1
1
Returns: 1
2
1
2
Returns: 1
920370433586588
906812
3
Returns: 920367388494911
1
1
1
Returns: 1
663058584590709191
1
896
Returns: 1
3533
241414
968445
Returns: 3533
288191650397020198
4384
19
Returns: 286739052218007394
156188231877019055
6770
14
Returns: 155842762201028665
858471555
466874
980466
Returns: 466874
5
4
10
Returns: 4
645857068953247253
408015
1
Returns: 645855485874742422
760361187826642914
112874
1
Returns: 760354448965942100
87440612512604469
651515
110364
Returns: 8404133
103878468869364701
5
850455
Returns: 5
1794038752362887
6228
119734
Returns: 6228
571235547515202529
314278
831858
Returns: 314278
105112
1351
348
Returns: 3663
70
10777
10
Returns: 70
114964822086149433
584990
3
Returns: 114964232423470104
7
2
5
Returns: 2
987654321098765432
1001
3
Returns: 984295874302122458
28
6
1
Returns: 22
987654321098765432
100
1
Returns: 966507087230325400
987654321098765400
100000
3
Returns: 987624661120839018
519720749018566089
493095
98
Returns: 519616891746934731
9
4
1
Returns: 7
1000000000000000000
1000000
1
Returns: 999998999961097956
1000000000
66
1
Returns: 976428157
637342280896368832
2404
61
Returns: 480793436705677049
134208905031
1066
42
Returns: 109299121069
1000000000000000000
1000000
20000
Returns: 954480683876916680
1574803
711
9
Returns: 1552708
23310457
32752
307
Returns: 23078672
83
11
1
Returns: 74
999999999999999999
1000000
12345
Returns: 981265704052655169