Problem Statement
We refer to the positions in our sequence starting with 1. Let the items in our sequence
initially be 1, 2, ..., n. Let k be the specified final position, and
let remove be a list of
Create a class Removal that contains a method finalPos that takes as input n,
the original sequence length, k the final position of interest,
and remove, a
Definition
- Class:
- Removal
- Method:
- finalPos
- Parameters:
- int, int, String[]
- Returns:
- int
- Method signature:
- int finalPos(int n, int k, String[] remove)
- (be sure your method is public)
Constraints
- n will be between 1 and 2,000,000,000 inclusive.
- k will be between 1 and n inclusive.
- remove will contain between 1 and 50 elements inclusive.
- Each element of remove will be formatted as "lo-hi".
- In each element of remove, neither lo nor hi will have leading zeros.
- In each element of remove, 0 < lo <= hi <= n.
- In each element of remove, hi will be less than or equal to the number of items remaining after the preceding removals.
Examples
8
3
{"3-4","4-5"}
Returns: 5
As described above, the final sequence will be 1, 2, 5, 8, so item 5 ends up in position 3 of the final sequence.
100
13
{"19-50","19-50","19-19"}
Returns: 13
None of these removals affects position 13.
100
39
{"19-50","19-50","19-19"}
Returns: -1
The final sequence contains less than 39 items.
2000000000
2000000000
{"1-1"}
Returns: -1
2000000000
1999999999
{"1-1"}
Returns: 2000000000
2000000000
2000000000
{"1-1999999003"}
Returns: -1
1000000000
9
{"20-100","100-200","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100"}
Returns: 9
1000000000
30
{"20-100","100-200","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100","20-100"}
Returns: 4100
1000000000
30
{"20-100","100-200","20-100"}
Returns: 293
2000000000
30
{"30-100","100-200","20-100"}
Returns: 283
2000000000
30
{"30-100","100-200","31-100"}
Returns: 101
1995999999
1000000000
{"1000000000-1100000000","5-100000","17-895000000","1000000000-1000000000"}
Returns: 1995099982
2000000000
1000000000
{"1-1000000000","1000000000-1000000000"}
Returns: -1
2000000000
1000000000
{"12-1000000010","1000000000-1000000000"}
Returns: 2000000000
700
500
{"3-3","3-3","3-3","3-3","3-3","3-3","3-3","3-3","3-3","3-3","3-3","3-3","3-3","3-3","3-3","3-3","3-3","3-3","3-3","3-3","3-3","3-3","3-3","3-3","3-3","3-3","3-3","3-3","3-3","3-3"}
Returns: 530
700
500
{"498-500","500-503","600-603"}
Returns: 507
100
39
{ "19-50", "19-50", "19-19" }
Returns: -1
200000000
19999
{ "19-50", "99-500", "19-1999", "19-50", "19-50", "19-1999", "19-50", "19-50", "19-1999", "1799999-19999999" }
Returns: 26504
8
3
{ "3-4", "4-5" }
Returns: 5
1999999999
7000
{ "9-9000", "70-700000" }
Returns: 715923
2000000000
39
{ "19-50", "19-50", "19-19" }
Returns: 104
2000000000
1
{ "1-10" }
Returns: 11
2000000000
3
{ "3-4", "4-5" }
Returns: 5
2000000000
2000000000
{ "1-2000000000" }
Returns: -1
2000000000
1999999995
{ "1999999990-1999999993" }
Returns: 1999999999
2000000000
500000
{ "2-1000000000" }
Returns: 1000499999
2000000000
1
{ "5000-500000" }
Returns: 1
1999999999
100
{ "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2", "1-2" }
Returns: 182
2000000000
1000000000
{ "1-1" }
Returns: 1000000001
2000000000
1
{ "1-1" }
Returns: 2
2000000000
20
{ "1-1000000000", "50-100000", "100-10000000", "200-1000000" }
Returns: 1000000020
2000000000
1000000000
{ "10000000-500000000" }
Returns: 1490000001
2000000000
100000000
{ "1-1000000", "1000000000-1500000000" }
Returns: 101000000
8
3
{ "4-5", "3-4" }
Returns: 7
2000000000
45
{ "8-2000", "34-234245" }
Returns: 236250
200000000
199999
{ "19-50", "99-500", "19-1999", "19-50", "19-50", "19-1999", "19-50", "19-50", "19-1999", "1799999-19999999" }
Returns: 206504
2000000000
1999999
{ "19-50", "99-500", "19-1999", "19-50", "19-50", "19-1999", "19-50", "19-50", "19-1999", "1799999-19999999" }
Returns: 20206505
2000000000
13
{ "19-50", "19-50", "19-19" }
Returns: 13
8
2
{ "3-6", "2-3" }
Returns: 8
2000000000
1
{ "5-2000000000" }
Returns: 1
2000000000
1
{ "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999", "1-39999999" }
Returns: 1959999952
2000000000
200000000
{ "1-2" }
Returns: 200000002
1999999999
7000
{ "8-80000", "1000000-1000001", "90-10000000" }
Returns: 10086906
10
5
{ "6-8", "3-4" }
Returns: 10
2000000000
1000000000
{ "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3", "1-3" }
Returns: 1000000150
6
2
{ "3-4", "2-3" }
Returns: 6
10000000
1000
{ "1000-5000", "2000-30000", "1500-2500", "100-200", "100-1500", "50000-100000" }
Returns: 35505
100
50
{ "51-56", "48-49" }
Returns: 58
100
2
{ "1-2", "3-4", "1-2", "3-4", "1-2", "3-4" }
Returns: 12
50
8
{ "4-5", "4-9", "15-18" }
Returns: 16
4
2
{ "3-3", "2-2" }
Returns: 4
100
30
{ "32-40", "32-40", "1-6" }
Returns: 54
5
2
{ "3-3", "1-1" }
Returns: 4
3
2
{ "1-1" }
Returns: 3
20
2
{ "5-10", "1-4" }
Returns: 12
10000
99
{ "100-100", "80-80", "78-78", "56-112", "12-58", "72-111", "1111-1115", "12-13", "101-110", "111-123", "105-106" }
Returns: 248
3
2
{ "2-3" }
Returns: -1
20
5
{ "6-7", "1-4" }
Returns: 11
2000000000
2000000000
{ "1-2" }
Returns: -1
100
2
{ "3-3", "2-4" }
Returns: 6
100
11
{ "14-15", "2-13" }
Returns: 25
1999999999
2
{ "2-3", "3-4", "4-5", "5-6", "2-3", "3-4", "4-5", "5-6", "7-1929", "393-203093", "29382-199299", "1-1", "1-1", "1-1", "1-1", "1-1", "1-1", "1-1", "1-1", "1-1", "1-1", "1-1", "1-1", "1-1", "1-1", "1-1", "1-1", "1-1", "1-1", "1-1", "1-1", "1-1", "1-1", "1-1", "1-1", "1-1", "1-1", "1-1", "1-1", "1-1", "1-1", "1-1", "1-1", "1-1", "1-1", "1-1", "1-1", "1-1", "1-1" }
Returns: 1979