#include using namespace std; //************************************************************************** // HackerRank Prepare > Algorithms > Implementation: Circular Array Rotation //************************************************************************** vector circularArrayRotation(vector a, int k, vector queries) { // deque for rotation deque queue; for (auto i: a) queue.push_back(i); // circular rotate right for (int n = 0; n < k; n++) { int val = queue.back(); queue.pop_back(); queue.push_front(val); } // result of queries into deque after rotation vector result; for (auto i: queries) result.push_back(queue.at(i)); return result; } int main() { // k, array N, queries vector,vector>> testCases = { {2, // k {1,2,3}, // array N {0,1,2}}, // queries {51, // k // 1 2 3 4 5 6 7 8 9 10 {39356,87674,16667,54260,43958,70429,53682,6169,87496,66190, // array N 90286, 4912,44792,65142,36183,43856,77633,38902,1407,88185, 80399,72940,97555,23941,96271,49288,27021,32032,75662,69161, 33581,15017,56835,66599,69277,17144,37027,39310,23312,24523, 5499,13597,45786,66642,95090,98320,26849,72722,37221,28255, 60906}, //1 2 3 4 5 6 7 8 9 10 {47,10,12,13, 6,29,22,17, 7, 3, // 1 queries 30,45, 1,21,50,17,25,42, 5, 6, // 2 47, 2,24, 1, 6,14,24,43, 7, 2, // 3 35, 3,13,22,16,19, 0,12,10,32, // 4 41,14, 1,42,35, 0, 9,34,17,14, // 5 15,38,17,13,40,48,27,38,41, 8, // 6 14,25,11,27,47, 2,20,22,39, 4, // 7 28,29,43,29,21, 1, 4, 4,10,46, // 8 43,50,33,34,12,47,32,13, 8,47, // 9 22,23,21,33,24,43,35,19,39,24} // 10 }}; for (auto i: testCases) { int k = get<0>(i); vector& a = get<1>(i); vector& queries = get<2>(i); vector result = circularArrayRotation(a, k, queries); for (auto i: result) cout << i << endl; cout << "\n-----------\n"; } return 0; }