Problem Statement
You can do 3 kinds of operations with this queue:
- Extract first element. After applying this operation, queue a1, ..., aK becomes a2, ..., aK.
- Shift queue elements left. After applying this operation, queue a1, ..., aK becomes a2, ..., aK, a1.
- Shift queue elements right. After applying this operation, queue a1, ..., aK becomes aK, a1, ..., aK-1.
Definition
- Class:
- BidirectionalQueue
- Method:
- extractElements
- Parameters:
- int, int[]
- Returns:
- int
- Method signature:
- int extractElements(int N, int[] indices)
- (be sure your method is public)
Constraints
- N will be between 1 and 50, inclusive.
- indices will contain between 1 and N elements, inclusive.
- Each element of indices will be between 1 and N, inclusive.
- All elements of indices will be distinct.
Examples
10
{1, 2, 3}
Returns: 0
The elements are extracted in the same order as they appear in the queue, so no shifts are required.
10
{2, 9, 5}
Returns: 8
To extract the first wanted element, 1 left shift is required. After this the next wanted element will be 7th in a queue with 9 elements, so to extract it 3 right shifts are required. Finally, the last wanted element will be 5th in a queue with 8 elements, so either 4 left shifts or 4 right shifts are required.
50
{26, 1, 27, 2, 28, 3, 29, 4, 30, 5, 31, 6, 32, 7, 33, 8, 34, 9, 35, 10, 36, 11, 37, 12, 38, 13, 39, 14, 40, 15, 41, 16, 42, 17, 43, 18, 44, 19, 45, 20, 46, 21, 47, 22, 48, 23, 49, 24, 50, 25}
Returns: 625
1
{1}
Returns: 0
32
{27, 16, 30, 11, 6, 23}
Returns: 59
39
{14,4,20,37,9,16,32,13,10,39,22,1,2,5,11,35,18,25,31,15,28,33,7,36,8,30,17,12,19,3,26,38,29,23}
Returns: 220
19
{12,15,10,7,1,19,9,8,6,2,4,18,13,16,14,17}
Returns: 44
27
{16,20,26,4,6,25,13,12,23,21,11,15,3,24,17,22,8,7,10,27,2,18,19}
Returns: 89
28
{28,17,25,9,3,6,2,12,20,16,5,1,23,14,22,21,11,26,27,15,7,24,8,18,10,13}
Returns: 105
10
{6,1,8,9,4,5,3}
Returns: 16
33
{18,25,2,28,8,26,22,9,30,27,1,29,14,10,21,13,20,33,15,19,5,3,23,31,32,12,7,11,24}
Returns: 162
28
{23,28,17,1,9,8,7,16,26,5,22,10,19,12,20,14,18,13,24,6,21,2,4}
Returns: 101
49
{37,33,31,14,13,21,28,20,40,3,24,46,29,11,23,1,41,26,48}
Returns: 191
29
{15,8,14,23,25,12,26,11,17}
Returns: 65
48
{47,21,35,5,40,39,19,18,25,16,15,4,6,28,33,31,9,8,22,20,36,32,30,29,14,44,34,1,27,17,42,48,46,7}
Returns: 218
32
{5,12,15,8,29,19,21,10,30,23,2,31}
Returns: 74
7
{3,6,5,2,4,7}
Returns: 7
32
{30,31,8,1,12,9,6,10,20,18,5,26,14,22,17,24,25,4,23,28,19,3,27,13,16,11,32,15,7,29,2,21}
Returns: 120
25
{21,7,17,22,25,12,5,18,6,11,3,13,2,23,19,14,15,8,1,16,4,24,20,10}
Returns: 100
37
{12,29,10,36,30,7,24,5,2,19,16,1,28,3,4,22,18,34,26,35,23,15,25,33,11,17,37,31,20,9,14,6,13,8,32,27,21}
Returns: 217
41
{7,17,4,12,20,28,32,27,40,35,5,18,2,34,6,23,15,22,31,1,24,13,29,36}
Returns: 163
15
{11,4,13,3,14,1,9,7,8,10,15}
Returns: 34
8
{2,6}
Returns: 4
15
{5,12,11,8,6,7,9,14,4,10}
Returns: 21
32
{25,32,1,15,19}
Returns: 30
40
{31,9,23,10,21,39,7,26,4,11,1,38,6,17,35,20,40,15,3,27,37,13,30,12,28,29,33,14,5,18,34,8,36}
Returns: 247
4
{1,3}
Returns: 1
47
{4,13,10,32,38,36,16,41,1,25,29,3,34,28,43,20,19,46,27,23,6,35}
Returns: 212
8
{4,1,7,6}
Returns: 9
39
{35,19,28,37,18,33,5,31,16}
Returns: 94
9
{4,3,1,2}
Returns: 6
37
{36,9,8,6,5,22,2,20}
Returns: 56
46
{38,30,3,32,34,42,23,31,17,37,11,26,7,1,22,36,21,35,33,28,27,39,29,40,12,2,46,15,24,45}
Returns: 230
36
{27,22,19,35,33,25,11,9,3,34,26,23,13,21,4,5}
Returns: 95
28
{15,14,12,17,8,1,4}
Returns: 34
23
{21,14,13,19,23,22,5,7}
Returns: 23
15
{5,11,1,7,4,15}
Returns: 22
31
{4,29,19,27,10,5,7,25,16,23,18,30,24,28,3}
Returns: 82
28
{6,14,25,21,4,7,17,15,13,27,8,23}
Returns: 68
32
{5,16}
Returns: 14
17
{10,15,1,5,9,3,14}
Returns: 29
23
{1,14,13,12,18,23,7,16,5,3,17,10,20,8,19,22}
Returns: 59
12
{3,10,7,2,4,8,6,12,9,11,5,1}
Returns: 22
47
{38,12,44,43,7,26,20,11,3,14,6}
Returns: 105
50
{9,34,39,33,40,31,48,25,13,12,45,23,17,4,50,6,47,32,36,38,19,27,16,30,49,21,14,24,44,29,46,2,11,20,22,18,35,42,37,5,26}
Returns: 268
47
{5,41,22,11,31,8,29,21,16,30,44,9,15,6,3,37}
Returns: 167
3
{3,1,2}
Returns: 1
5
{1,3,4}
Returns: 1
23
{16}
Returns: 8
46
{10,3,15,41,24,16,17,36,4,9,26,45,14,13,32,44,33,2,18,7,46,38,30,5,11,31,1,25,42,23,40,27,20,39,43,37,8,34,19}
Returns: 286
10
{7,4,6,10}
Returns: 10
26
{16,17,26,5,3,12,19,1,4,10,8,9,2,7,18,6,21,23,24,15,25,14,22}
Returns: 76
27
{13,15,18,24,16,2,26,5,8,7,6,1,23,10,4,25,22,19,9,20,12,3}
Returns: 81
22
{5,16,9,21,18,6}
Returns: 40
47
{10,28,16,13,27,22,3,46,25,24,7,37,15,12,33,31,29,40,36,38,34,6,39,4,47,32,26,18,43,42,2,30,5,17,44,1,20,35,8,41,21,45,23,9,19,11,14}
Returns: 270
23
{13,8,5,21,19,17,2,11,14,16,3,4,7,22,6,23,18,1,9,12,15,20,10}
Returns: 61
27
{17,11,7,20,16,5,23,26,6,14,15,4,1,21,19,3,10,24,22,25,27,13,18,12,8,2,9}
Returns: 96
10
{1, 6, 3, 2, 7, 9, 8, 4, 10, 5}
Returns: 14
28
{26,19,7,17,24,15,9,2,27,12,3,28,1,25,22,21,20,23,18,14,4,5,8,11,10,6,16,13}
Returns: 90
18
{1,11,13,9,5,18,10,12,16,14,4,15,8,17,2,3,7,6}
Returns: 39
24
{13,8,24,21,9,5,22,15,6,17,4,2,10,18,11,16,14,23,20,3,12,19,1,7}
Returns: 91
22
{8,21,22,17,19,11,16,9,1,14,18,10,7,13,2,12,4,3,6,15,20,5}
Returns: 66
25
{16,8,17,3,22,13,6,4,9,20,19,24,1,23,21,15,25,5,7,12,18,10,14,11,2}
Returns: 82
50
{29,4,6,8,40,27,15,41,18,36,42,16,44,38,24,50,17,3,32,37,20,10,25,35,49,48,39,9,26,14,2,23,13,43,21,45,11,30,47,33,22,34,31,7,5,46,28,12,1,19}
Returns: 387
18
{18,17,6,9,7,1,12,2,3,11,15,4,14,5,13,10,8,16}
Returns: 39
50
{19,50,49,41,3,1,7,6,13,12,48,8,32,33,18,22,36,24,2,23,35,16,45,37,39,21,40,5,47,11,27,14,20,29,9,46,15,43,34,4,28,26,44,10,31,25,38,17,30,42}
Returns: 279
22
{21,19,9,13,1,22,7,5,15,20,6,4,11,12,18,16,8,3,17,10,2,14}
Returns: 60
26
{1,20,7,21,8,9,19,26,3,5,23,18,14,4,15,24,10,16,11,25,12,13,2,17,6,22}
Returns: 97
44
{21,28,43,26,20,44,6,30,40,23,7,33,37,32,14,24,25,3,34,10,4,27,18,11,31,17,19,2,38,16,8,15,35,22,36,39,13,5,42,12,41,9,29,1}
Returns: 290
34
{10,5,18,4,33,27,26,31,34,16,17,15,3,30,14,2,12,6,7,29,13,1,20,8,23,25,9,32,24,19,28,22,11,21}
Returns: 143
21
{3,18,9,5,2,10,14,17,7,1,21,6,15,11,20,4,12,8,19,13,16}
Returns: 56
25
{15,24,12,21,4,11,17,9,2,22,3,13,16,10,19,14,5,1,25,20,7,18,6,8,23}
Returns: 94
28
{2,17,14,23,13,10,1,21,24,6,20,9,16,28,7,22,18,5,26,12,8,25,3,4,11,15,27,19}
Returns: 114
50
{15,3,35,7,28,22,5,46,38,45,17,48,18,37,42,1,50,36,25,39,24,2,13,19,43,9,12,8,10,49,21,31,6,33,47,29,23,20,11,32,4,40,16,14,41,34,44,27,30,26}
Returns: 343
4
{4,3,1,2}
Returns: 2
11
{8,7,1,9,11,10,6,2,3,4,5}
Returns: 14
2
{1,2}
Returns: 0
31
{6,31,7,1,25,26,15,19,16,28,22,9,5,11,21,14,23,20,8,12,2,4,27,24,29,18,17,10,30,3,13}
Returns: 105
38
{8,29,25,16,19,10,23,28,17,9,24,34,1,15,37,11,38,21,14,36,5,7,27,33,32,13,31,12,30,3,6,20,26,22,35,4,18,2}
Returns: 192
32
{27, 16, 30, 11, 6, 23 }
Returns: 59
10
{2, 9, 5 }
Returns: 8
3
{3, 2, 1 }
Returns: 2
10
{1, 6, 3, 2, 7, 9, 8, 4, 10, 5 }
Returns: 14
32
{27, 16, 30, 15, 6, 23 }
Returns: 64
50
{23, 31, 24, 12, 13, 1, 2, 49, 48 }
Returns: 61
32
{27, 16, 30, 11, 6, 26 }
Returns: 56
50
{24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 6, 5, 3, 2, 40, 45, 33, 32, 31 }
Returns: 74
22
{16, 14, 17, 7, 22, 21, 11, 2, 12, 3, 9, 20, 1, 19, 4, 18, 15, 13, 5, 10 }
Returns: 67
50
{50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 }
Returns: 49
50
{25, 1, 26, 50, 24, 2, 27, 3, 28, 30, 5, 33, 21, 31, 41, 15, 44, 12, 40, 13, 23, 6, 45, 7 }
Returns: 361
5
{2 }
Returns: 1
10
{1, 2, 3 }
Returns: 0
50
{40, 36, 45, 26, 49, 25, 27, 9, 8, 43, 38, 33, 23, 12, 41, 39, 5, 11, 7, 18, 19, 10, 1, 28, 13, 16, 50, 34, 44, 20, 14, 47, 46, 37, 24, 42, 6, 22, 2, 4, 35, 15, 30, 29, 21, 32, 31, 17, 48, 3 }
Returns: 285
50
{1, 50, 2, 30, 41, 17, 49, 6, 7, 8, 32, 15 }
Returns: 105