Problem Statement
Fox Ciel is taking an English class during both semesters. For the class she needs to learn a lot of new words: exactly w1 words during the first semester and exactly w2 words during the second semester.
Ciel can learn arbitrarily many words on any single day. However, she does not like to change her workload too much. Therefore, the number of words she will learn on any two consecutive days must differ by at most one.
Formally, suppose the days of the school year are numbered from 1 to d1+d2. Suppose that Ciel will learn x[i] words on day i. Ciel will be happy if the numbers x[i] have the following properties:
- x[1] + ... + x[d1] is exactly equal to w1
- x[d1+1] + ... + x[d1+d2] is exactly equal to w2
- for each valid i, | x[i+1] - x[i] | is at most 1
Definition
- Class:
- RememberWords
- Method:
- isPossible
- Parameters:
- int, int, int, int
- Returns:
- String
- Method signature:
- String isPossible(int d1, int d2, int w1, int w2)
- (be sure your method is public)
Constraints
- d1 will be between 1 and 1,000,000,000, inclusive.
- d2 will be between 1 and 1,000,000,000, inclusive.
- w1 will be between 0 and 1,000,000,000, inclusive.
- w2 will be between 0 and 1,000,000,000, inclusive.
Examples
2
3
7
18
Returns: "Possible"
The school year has 2+3 = 5 days. Ciel needs to learn exactly 7 words during the first semester and exactly 18 words during the second semester. The only valid way to do so is to learn 3, 4, 5, 6, and 7 words during the five days of the school year. Note that 3+4 = 7 and 5+6+7 = 18.
1
1
3
5
Returns: "Impossible"
Here the school year has just 1+1 = 2 days. Ciel must learn 3 words on the first day and 5 words on the second day. However, |3 - 5| is more than 1, so Ciel will not be happy with this schedule.
3
5
300
500
Returns: "Possible"
One possible solution is to learn 100 words every day.
100
1
0
2
Returns: "Impossible"
1000000000
1000000000
1000000000
1000000000
Returns: "Possible"
8
2537
25
83
Returns: "Possible"
26662
46
173072
9
Returns: "Possible"
353029
4854
7456921
1845874
Returns: "Possible"
811327
59382
92
8651426
Returns: "Possible"
3984576
57712665
18949
9805118
Returns: "Possible"
26052
48134
26936548
8
Returns: "Possible"
3631846
7927
346
3514
Returns: "Possible"
15789
66807687
23469
3270
Returns: "Possible"
585
8393
73
4574100
Returns: "Possible"
75276
1493191
202
22
Returns: "Possible"
225
1523
471
302
Returns: "Possible"
24241313
1502
3135139
3751
Returns: "Possible"
234
6805
0
4710
Returns: "Possible"
45324
9924
31897
1893
Returns: "Possible"
86842
138236
6056638
7976243
Returns: "Possible"
35880
532592
57404715
21415073
Returns: "Possible"
33348897
981
78695
381972
Returns: "Possible"
40111456
21502289
758
119522
Returns: "Possible"
23537198
29962949
2783139
839
Returns: "Possible"
1924440
2861
5055
9482
Returns: "Possible"
3477541
8661
6
248
Returns: "Possible"
93464914
8461
671485
65
Returns: "Possible"
898458
78
228
2872
Returns: "Possible"
7571493
5213
943895
3
Returns: "Possible"
57
87643
8
5
Returns: "Possible"
75498
680602
181
42
Returns: "Possible"
98
56164
9399
7072756
Returns: "Possible"
8673
6878510
418209
3571758
Returns: "Possible"
2023257
79
7016
8723
Returns: "Possible"
288
558739
1445
81465
Returns: "Possible"
4156162
51
8683382
9664
Returns: "Possible"
3204966
3406
660939
638
Returns: "Possible"
5
4153209
51
912
Returns: "Possible"
8496
86641
2454
47
Returns: "Possible"
8640533
731
1390829
992
Returns: "Possible"
968944
10
5421
352
Returns: "Possible"
216699
5894375
1678951
75
Returns: "Possible"
33622003
757471
9
44
Returns: "Possible"
635555
7821772
85496937
558
Returns: "Possible"
8309
3737415
6637
3037
Returns: "Possible"
6169
5885
840537
2
Returns: "Possible"
48
5804
523
6338
Returns: "Possible"
951
6657072
6
5952004
Returns: "Possible"
24738
75759
65
344
Returns: "Possible"
39268
1737
171
7351
Returns: "Possible"
509399
62582
5065866
56559930
Returns: "Possible"
512623
3473740
1254
1531
Returns: "Possible"
8
10720
2
9451835
Returns: "Possible"
4677
117393
3
886
Returns: "Possible"
14437
9909
1256
789
Returns: "Possible"
28
76753667
2152777
734
Returns: "Impossible"
2
12261088
4031
421
Returns: "Impossible"
7
84166018
962395
990924
Returns: "Impossible"
41379
159
9370
7362333
Returns: "Impossible"
6
9153
77
9
Returns: "Impossible"
134
62
889206
18463
Returns: "Impossible"
99
93
6969
59
Returns: "Impossible"
52402
1648
85681
50401704
Returns: "Impossible"
212180
6089
424194
52332962
Returns: "Impossible"
77
956223
776558
1
Returns: "Impossible"
910279
92
2550
88651132
Returns: "Impossible"
7708
6
4946
2633
Returns: "Impossible"
3037
25
78172445
537
Returns: "Impossible"
96802
1054
801
9485748
Returns: "Impossible"
2277
5417
8200350
62
Returns: "Impossible"
36
9
516809
5255
Returns: "Impossible"
775
44
6286
88473
Returns: "Impossible"
8
9029
99604553
2605253
Returns: "Impossible"
2
1334
5278650
9018
Returns: "Impossible"
44685
2774
0
60432979
Returns: "Impossible"
10
89201717
42841
2656198
Returns: "Impossible"
4698923
1
3638716
57855402
Returns: "Impossible"
28
6
94
7651
Returns: "Impossible"
6
7342093
9566
8
Returns: "Impossible"
2505
898093
46301244
26
Returns: "Impossible"
55
8956133
2333036
2144
Returns: "Impossible"
42188134
8
979484
634069
Returns: "Impossible"
258
2670535
59868821
3
Returns: "Impossible"
18813
2
62
6413
Returns: "Impossible"
56
8029
463899
6721329
Returns: "Impossible"
236
89
2
4071699
Returns: "Impossible"
9
9
4596
3
Returns: "Impossible"
10
6179704
8184
88558
Returns: "Impossible"
2
71459
74889
4639
Returns: "Impossible"
5
4486
7247
1476
Returns: "Impossible"
7
2
75306709
9519327
Returns: "Impossible"
2
1
9
32518
Returns: "Impossible"
1209640
6
653
5305
Returns: "Impossible"
27938545
374
6
53211402
Returns: "Impossible"
675
8
57
34321
Returns: "Impossible"
67
35
5387
472
Returns: "Impossible"
49
744342
1931
4
Returns: "Impossible"
1353
3
9354
9508
Returns: "Impossible"
71
2
70
57705
Returns: "Impossible"
679571
43
7
233077
Returns: "Impossible"
1
99
92
8
Returns: "Impossible"
29
45
9991
948468
Returns: "Impossible"
97
629
17149104
4
Returns: "Impossible"
997
9091
949279
96899147
Returns: "Impossible"
91219865
3
89707
740639
Returns: "Impossible"
3
3
6
15
Returns: "Possible"
4
12
23
34
Returns: "Possible"
5
1
2
3
Returns: "Impossible"
1
3
0
7
Returns: "Impossible"
1
1
1000000
1000000
Returns: "Possible"
1
1
1000
7
Returns: "Impossible"
3
4
11
23
Returns: "Possible"
4
1
2
3
Returns: "Impossible"
1
1
1000000000
999999999
Returns: "Possible"
49
6
64
46
Returns: "Possible"
5
3
12
0
Returns: "Possible"
101
1
101
50
Returns: "Impossible"
5
5
3
3
Returns: "Possible"
2
2
4
0
Returns: "Impossible"
3
4
11
27
Returns: "Impossible"
1
1
999999999
999999999
Returns: "Possible"
5
1
14
6
Returns: "Impossible"
1
1
1
100
Returns: "Impossible"
1
1
0
0
Returns: "Possible"
31
1
28
9
Returns: "Impossible"
2
1
14
5
Returns: "Impossible"
89
7
41
43
Returns: "Possible"
6
6
123
140
Returns: "Possible"
957461902
42533
844159813
990317651
Returns: "Possible"
3
1
18
5
Returns: "Possible"
1
1
1000000000
1000000000
Returns: "Possible"
10000
10000
50005000
150005000
Returns: "Possible"
6
5
10
45
Returns: "Impossible"
1
1
1000000000
999999998
Returns: "Impossible"
4
3
47
24
Returns: "Impossible"
6181
334539678
331080498
42863604
Returns: "Impossible"