-
Notifications
You must be signed in to change notification settings - Fork 0
/
dynamic-array.cpp
43 lines (36 loc) · 1.2 KB
/
dynamic-array.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <vector>
#include <algorithm>
/*
* Complete the 'dynamicArray' function below.
*
* The function is expected to return an INTEGER_ARRAY.
* The function accepts following parameters:
* 1. INTEGER n
* 2. 2D_INTEGER_ARRAY queries
*/
[[nodiscard]] auto dynamicArray(int n, std::vector<std::vector<int>> queries) -> std::vector<int> {
auto answers_for_type_2_queries = std::vector<int>{};
answers_for_type_2_queries.reserve(queries.size() - 1);
auto arr = std::vector<std::vector<int>>(n);
auto last_answer = int{0};
enum class QueryType {
First = 1,
Second
};
std::for_each(queries.begin(), queries.end(), [&](auto const& row){
auto q_type = row.at(0);
auto x = row.at(1);
auto y = row.at(2);
auto idx = int{(x ^ last_answer) % n};
switch (static_cast<QueryType>(q_type)) {
case QueryType::First :
arr.at(idx).push_back(y);
break;
case QueryType::Second :
last_answer = arr.at(idx).at(y % arr.at(idx).size());
answers_for_type_2_queries.push_back(last_answer);
break;
}
});
return answers_for_type_2_queries;
}