Problem Statement
We are going to break into the storehouse. As a part of preparation for the heist, we already found out some information about the warehouse. In particular, we know exactly how the containers are currently placed in the warehouse. You are given a
We also discovered some information about the surveillance system. The system consists of several hidden cameras. You are given a
Finally, we know something about what the cameras currently see. You are given a
It is guaranteed that all our information is correct and consistent.
Your task is to use the provided information to deduce which sectors are monitored by at least one surveillance camera. Return a
Definition
- Class:
- SurveillanceSystem
- Method:
- getContainerInfo
- Parameters:
- String, int[], int
- Returns:
- String
- Method signature:
- String getContainerInfo(String containers, int[] reports, int L)
- (be sure your method is public)
Constraints
- containers will contain N elements, where N is between 1 and 50, inclusive.
- Each character in containers will be either 'X' or '-'.
- L will be between 1 and N, inclusive.
- reports will contain between 1 and N-L+1 elements, inclusive.
- Each element of reports will be between 0 and L, inclusive.
- The given information will be consistent.
Examples
"-X--XX"
{1, 2}
3
Returns: "??++++"
This storehouse has 6 sectors. There are containers in sectors 1, 4, and 5. There are two cameras: camera #0 monitors 1 container, and camera #1 monitors 2 containers. Clearly, camera #1 must be watching sectors 3, 4, and 5. Camera #0 may be watching sectors (0, 1, 2), (1, 2, 3), or (2, 3, 4). Thus, camera #0 is surely monitoring sector 2. Sectors 0 and 1 may or may not be monitored.
"-XXXXX-"
{2}
3
Returns: "???-???"
The camera is monitoring either the leftmost or the rightmost segment, thus the middle sector is surely not under surveillance.
"------X-XX-"
{3, 0, 2, 0}
5
Returns: "++++++++++?"
We can deduce that cameras #1 and #3 are watching segments (0, 1, 2, 3, 4) and (1, 2, 3, 4, 5). Camera #2 is monitoring the segment (4, 5, 6, 7, 8), since this is the only segment with two occupied sectors. Camera #0 is either watching (5, 6, 7, 8, 9) or (6, 7, 8, 9, 10), thus the rightmost sector might have slipped from the surveillance.
"-XXXXX---X--"
{2, 1, 0, 1}
3
Returns: "???-??++++??"
"-XX--X-XX-X-X--X---XX-X---XXXX-----X"
{3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3}
7
Returns: "???++++?++++++++++++++++++++??????--"
"X"
{1}
1
Returns: "+"
"X-"
{1}
2
Returns: "++"
"XX"
{1,1}
1
Returns: "++"
"--X-X--X----X--X-X-X----"
{7,7,7}
22
Returns: "++++++++++++++++++++++++"
"---"
{0,0}
2
Returns: "+++"
"-X-XXX-X-XXXX--XX-XX-X---XX----XX---X-XX--X-X-X-"
{11,9}
18
Returns: "?????????++++++++++++++++++++????---------------"
"-X--X---XX"
{3}
8
Returns: "-?+++++++?"
"X--XX-X-----"
{3,4,2,3,3}
8
Returns: "++++++++++++"
"---XXX----X---X-XX-X-XXXX-X-XX-XX-X-X--XX--X"
{19,20,21,20,20}
39
Returns: "++++++++++++++++++++++++++++++++++++++++++++"
"-X-X------X-XX-X-XX-----XXXX-X-X--X-X---XX"
{2,3,5,5}
10
Returns: "??++++++++??????????????????????????????--"
"XXXX--XXX-XXX-X--X-X---X-XXX----XXX-"
{9,9,11,7,7,11,8,8,7,10}
17
Returns: "+++++++++++++++++++++++++++++++++???"
"-XXXX-XXXX-XX-X-XXX-----XXX---X--X-X"
{3,2,1,3,4,3,1,3,2,3}
4
Returns: "????????????????????????????????????"
"-X--XX---XXXXXX-X--X-X"
{6}
11
Returns: "-?++++++++++?---------"
"------X-XX-X-"
{1,1,0,0,1,1}
2
Returns: "?????????????"
"X-X-XX----XX-XXXXX-XX---XXX-X--X"
{14}
25
Returns: "???????++++++++++++++++++???????"
"X--X-XX--X--XX-X-X---X--XX--XX-X-XX--X--X-XX--X-X"
{5,4,4,5,3,4,4,4,5,5,3,4,4,5,4,4,5,4,5,4,5,4,4,4,4,3,4,4,5,4,3,4,4}
9
Returns: "??????+++++++++++++++++++++++++++++++++++++??????"
"-XX--X-X--"
{3,2,3,2}
6
Returns: "?+++++++++"
"---XX-X-XX---XX-X--X---XX--X-X--XXX----XX---X---X"
{11,12,13}
29
Returns: "?????????????++++++++++++++++++++++++++??????????"
"-X-XX---"
{1,2,2,1,2}
3
Returns: "+++++++-"
"X-XX-X---XXXXX-X----X------XXX"
{11,10,10,10,11}
25
Returns: "++++++++++++++++++++++++++++++"
"X--XX--XXX-XX-X-X-"
{7,7,8,7,7,7,7}
12
Returns: "++++++++++++++++++"
"-XX--"
{2,1,2}
3
Returns: "+++++"
"--X------XX"
{2,1,1,1,0}
6
Returns: "?++++++++++"
"-X--XXX-XXX-X-X-X---X---X--X--X--X"
{14,14}
32
Returns: "?++++++++++++++++++++++++++++++++?"
"-XX-XX-X-X---X-XX----XX-X-XXXX"
{4,2,1,3,1,3,2,1,2}
5
Returns: "??????????+++????++++?????????"
"-X--XXX------XX-X-XXX-XX-XXXXXXX---X--XXX-"
{12,15,16,16,16,16,13,15,14,16,15,14}
24
Returns: "??++++++++++++++++++++++++++++++++++++++++"
"-X---XX--X--X-XX--X--XX-XXXX-XX-XX--"
{3,3,4,3,4,2,2,3,3,2,1}
5
Returns: "????????????????????????????????????"
"XXX--X"
{3}
5
Returns: "?++++?"
"XXX-----XXX-XXXX--XXXXXXX--XXX-XXX-X-X---X---"
{23,22,21}
35
Returns: "????????+++++++++++++++++++++++++++++++++++++"
"-X--XXXX----X-XXXX"
{3,4}
6
Returns: "?????????????????-"
"---X-XX-XX-X"
{2,1,1,2,0,2,2,2}
3
Returns: "++++++++++??"
"X-XX--XX--XXX-X-XXXX-XX--X-X-X---XXXX-------X--X--"
{19,16,19,17,20,19,16,18}
36
Returns: "---+++++++++++++++++++++++++++++++++++++++++++++++"
"-XX--X-------XX--X-X-XX-X--X-X--XX-XX-X---X-XXX-X"
{18,17,19}
42
Returns: "???++++++++++++++++++++++++++++++++++++++++++++??"
"--XXX--XX----X---XXX-XXXX----X-XXXX--XXXXX----X-XX"
{21,23,22,23,23,22}
43
Returns: "?+++++++++++++++++++++++++++++++++++++++++++++++??"
"X--------XX-X-X--XX-XXX--XX-XXXX-X-X-XX--"
{19,19}
38
Returns: "??+++++++++++++++++++++++++++++++++++++??"
"--X--X--X-X---X--XXX-"
{5,6,6,5}
14
Returns: "-?++++++++++++++++++?"
"-X---X----X--XX-XXXXX-X-X----X-XX-X-X-X----X--XX-"
{2,1,2,2,1,1,3,4,2,1,2,3,1,1,2,4,1,1,2,1,1}
4
Returns: "????????????????+++++????????????????????????????"
"-XX--XXXXXX-X-X-X-X-----X--X-XX--XX---XX--X-XXXX-"
{1,0,1,2,3,2,2,1,3,1,2,1,2,2,2,2,2,4,2,3,2,2,2,2,3,2,2,2,2,4,3,2,2,4,1,2,2,1}
4
Returns: "??+++?++++??++++++??++++++???++++++???++++???+???"
"-XX---X---XXX---XXX---X---XXXXXX-X-X-"
{6,4,4,4,4,4}
10
Returns: "-????????????????????????????????----"
"-X---X--XX-"
{4,3,3}
9
Returns: "+++++++++++"
"XXX----"
{2,3,1}
5
Returns: "+++++++"
"X------XX"
{3}
9
Returns: "+++++++++"
"XXX--X-XX----X--X-X-X-XXX"
{5,4,6,4,4,5,7}
12
Returns: "???????++++++++++++++++++"
"-X-XXX---XX-X--"
{5,5,5,5}
9
Returns: "-++++++++++++--"
"X-X------X-XX"
{1,1,2,1,0,1}
5
Returns: "?++++++++++?-"
"-X------XXXXXX-X--XXX------XXX-"
{3,3,3,3,3,6,4,7,3,7,6,2,5,5,6,6,4,6,3,3,4,3,6}
9
Returns: "+++++++++++++++++++++++++++++++"
"XX--X-XXX-X--X-XXXXXX-XX--X-XX-X--X-XXX--X-X-"
{21}
34
Returns: "----??++++++++++++++++++++++++++++++++??-----"
"X-X"
{1}
2
Returns: "?+?"
"X--X-X-XXX----X----"
{7,6,5}
15
Returns: "+++++++++++++++++++"
"-XX--X-X-XXXXX"
{4,2,3}
5
Returns: "????+???++++?-"
"XXX-XX--XX--X--XX--X--X-X--XX---X--X--"
{6,7,6,7,6,7,7,6,6,6,7,9,8,6,7,6,7,6,9}
16
Returns: "+++++++++++++++++++++++++++++++++++++?"
"XX-XX---XXXXX--X---XX-----XX--XX---X--XXX-XX-XXX"
{6,4,7,5,6,5,4,3,6,3,8,5,4,3,4,5,6,4,4,7,4,4,6,3,3,5,6,5,6,5,6,6,6,3,2,3}
10
Returns: "++++++++++++++++++++++++++++++++++++++++++++++++"
"X--XX-X---XX--XX-XXXX---X---X-X---X-----"
{14,14,12,12,14,13}
31
Returns: "-?+++++++++++++++++++++++++++++++++++++?"
"XXXXXXXX-"
{6,5}
6
Returns: "??+++++++"
"--X----X--X-X--XXX----XXXXXXX-X-XXXXX-"
{3,2,3,2,3,4,1,4,3,2,3,4,1,1,2,1,1,1,3,4,1,0,1,2,2,2}
4
Returns: "??+++++++?+?++??????????+++???????????"
"--X"
{0}
2
Returns: "++-"
"---"
{0}
2
Returns: "?+?"
"-XXXX"
{1,1}
1
Returns: "-????"
"-X-XX--------X-X-"
{1,1}
7
Returns: "----???+++++++?--"
"X---XXX-"
{0,0,1,1,0,1,0}
1
Returns: "?+++???+"
"-XXXX-X-X---XXX-X---X-XXX"
{2,3,4,5,5}
7
Returns: "?+++++++?????????????????"
"XX--XX---X-X--"
{2}
6
Returns: "--????????????"
"X--X---X--XX---X----"
{5,5,6}
17
Returns: "+++++++++++++++++++?"
"XXXXX-X--XX-XXXX------X--X---XXX-XXXXXXX-XX-X-X-"
{19,19,19,19}
35
Returns: "??????++++++++++++++++++++++++++++++++??????????"
"XXX--XXXX-------XX-XX"
{0,1,0,0,0,1,1,1,0,0,1,1}
1
Returns: "?????????????????????"
"-X---X-XX------XX-XXX-X-XX-----XX---XX-X-"
{15,15,16,14,14}
35
Returns: "?+++++++++++++++++++++++++++++++++++++++?"
"-X-XXXXX-X--XX-X--XXX-XXX-X-X--XX"
{12,14,12,13,13,15}
22
Returns: "???++++++++++++++++++++++++++++??"
"---XXXX---"
{4,4,4}
7
Returns: "?++++++++?"
"--X----XX---X-XXX--XX--XX"
{7,6,8}
14
Returns: "--???????++++++++++++????"
"XX-X-XXXX-XXXXX---XXX-X-X-XXX"
{8,6,7,9,7,7,6,6,7,7,5,7,7,8,6}
10
Returns: "?+++++++++++++++++++++++++++?"
"X-XXX--XXX--XXXXXX----XX---XX-X-X---"
{9,8,6,6,10,8,9,6,9,9,6,8,8,6,11,7,9,7,10}
15
Returns: "?+++++++++++++++++++++++++++++++++++"
"---X-XXX-XXX-X-XX-"
{10}
17
Returns: "?++++++++++++++++?"
"X-X----X-XX--X--XX----XX--XXX-----XXX-"
{0,1,2,0,2,1,1,1,2,1,0,0,1,2,1,1,0,1,1}
2
Returns: "??????????????????????????????????????"
"X---XX--X--X-XXX--XX---XXXXX--X---X-X-X-XXXXXX---"
{15,16,15,14,16,15,16,15,16,17,15,14,14,14,15,16,15,15,15,17}
29
Returns: "+++++++++++++++++++++++++++++++++++++++++++++++++"
"XXXX-X--XX--X--XX-XX--X-X--X---X-XX"
{6,5}
13
Returns: "--???????????????????+++++++++?????"
"--X--X---XXXXXX-----XX---XX-XX-"
{8,7,8,8,7,7,8,7,8,8,8,8}
16
Returns: "??+++++++++++++++++++++++++++?-"
"-X--XXX--XXXXX------X--X---XXXX--XX"
{16}
34
Returns: "++++++++++++++++++++++++++++++++++-"
"-XX-------XX--"
{0,2,1,0,1,2,2,0,2}
4
Returns: "?++++++++++++?"
"XXX-------XX-X--X-X-XXX--XX"
{10,10,9}
22
Returns: "?+++++++++++++++++++++++???"
"XX-X--XX--XXXX---XXX"
{2,3,1,2,2,2,3,1,1,2}
4
Returns: "??++++???????+++++??"
"XXX---X---X-X-"
{2,1,2,2,2,3}
7
Returns: "-?++++++++++++"
"XXXX----XXX"
{3,4}
4
Returns: "++++?--????"
"--XXX-XXX---XX-XX--X-X---XXXX--XX--XXXX-X-X---"
{5,6,6,4,4,4,5,5,5,4,5,6,4,5,6,5,4,5,5,5,3,5,5,6,3,5,6,5}
9
Returns: "????????++++++++++++++++++++++??+??++++???????"
"X--X---XXXX-XXX----XX--X-XXX-XXX--XX-XX-XX--X--XX-"
{20,20}
37
Returns: "???????????+++++++++++++++++++++++++++????????????"
"XXX-X-XXXX-XX-X-XXX---XX--X---XXXX---X-------XXX--"
{5,2,5,6,4,7,3,5,5,9,4,5,7,6,8,5,6,2,6,6,6,4,3,7,8,9,4,5,8,4,8,6,9,9,7}
12
Returns: "+++++++++++++++++++++++++++++++++++++++++++++++++?"
"XX-X-X-XX-X-XXX-X-X-X-XXXXX--X---XX---XXXXXXXXX--X"
{16,18,17,18,19,17,19,19,18,17,18}
30
Returns: "???????++++++++++++++++++++++++++++++++++++++++???"
"--XXX--XX-X-XXX----X-X-X--X-XXX---XX---X-XX--XXX-X"
{6,7,5,4,7,7,6,6,6,6,6,7,6,7,5,5,8,6,6,6,6,7,7,6,7,6,9,6,8,6,5}
13
Returns: "?+++++++++++++++++++++++++++++++++++++++++++++++??"
"--X--X--XXX--X---X-X-XX-X---X-XX-X-XXX---X--X-XX--"
{10,12,11,10,9,10,11,10,10,10,11,11,10,10,10,11,11,9,10,11,10,12,10,10,10,10}
22
Returns: "??+++++++++++++++++++++++++++++++++++++++++++++++?"
"XXX-XXX-XXXX----XXX-X--XX-XX--XXX--X-X---X---X-X-X"
{2,1,2,1,2,1,2,1,2,2,0,2,2,2,1,0,0,1,1,1,1,3,2,2,1,2,2,1,2,2,3,1,1,2,1,1,2,1,1,3,3,1,3}
3
Returns: "?????????++++++++??+++++???++++?+++++++++++++++++?"
"--X--XXX--XX-X--XX-XX------XX--XX-XX-XXXX----XXXX-"
{23}
46
Returns: "-++++++++++++++++++++++++++++++++++++++++++++++---"
"--XXXX--XXXXX--X-X--X-XXXX-XXX-X-XXX-XX-X-X-XX-XX-"
{19, 17}
29
Returns: "-????????????+++++++++++++++++++++++++++++????????"
"----XX---XXX--X-XX-XX--XX-X--XX-X-XX--XX-XXX-XX---"
{16,20,19,20,19,19,18,18,18}
34
Returns: "++++++++++++++++++++++++++++++++++++++++++++++????"
"-----X-XXXXX-----X--XX-X--X----X---X--XX--X--X--X-"
{15,15,15,13,15,16,15}
38
Returns: "???++++++++++++++++++++++++++++++++++++++++++????-"
"XXXX----XXXX--XXXX"
{4, 4}
4
Returns: "????----????--????"
"-XX--X-XX-X-X--X---XX-X---XXXX-----X"
{3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }
7
Returns: "???++++?++++++++++++++++++++??????--"
"------X-XX-"
{3, 0, 2, 0 }
5
Returns: "++++++++++?"
"-XXXXX---X--"
{2, 1, 0, 1 }
3
Returns: "???-??++++??"
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
{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: "??????????????????????????????????????????????????"
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
{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: "++++++++++++++++++++++++++++++++++++++++++++++++++"
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
{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: "??++++++++++++++++++++++++++++++++++++++++++++++??"
"XXXX"
{4 }
4
Returns: "++++"
"-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X"
{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 }
2
Returns: "??????????????????????????????????????????????????"
"-XX--X-XX-X-X--X---XX-X---XXXX-----X-XX--X-XX-X-X-"
{2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }
7
Returns: "?????????+++++++++++++++++???++++++++++++?????----"
"XXXXXX"
{6 }
6
Returns: "++++++"
"XXXXXX---X"
{2, 5 }
5
Returns: "?++++++++?"
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
{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: "++++++++++++++++++++++++++++++++++++++++"
"XX--XX-XXX-XX--XX-XX-X---"
{5, 7, 6, 6, 6, 5, 6, 5, 6, 7, 6, 7, 7, 6 }
10
Returns: "+++++++++++++++++++++++++"
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
{50 }
50
Returns: "++++++++++++++++++++++++++++++++++++++++++++++++++"
"-XXXXX-"
{2 }
3
Returns: "???-???"