Caso # | Resultado | Tiempo | Memoria |
---|---|---|---|
#1 |
Correcto
|
0.003 s | 34 KBi |
#2 |
Incorrecto
|
0.005 s | 15 KBi |
#3 |
Correcto
|
0.004 s | 32 KBi |
#4 |
Correcto
|
0.004 s | 16 KBi |
#5 |
Correcto
|
0.003 s | 20 KBi |
#6 |
Correcto
|
0.813 s | 28 KBi |
#7 |
Correcto
|
0.809 s | 27 KBi |
#8 |
Correcto
|
0.006 s | 0 KBi |
#9 |
Correcto
|
0.005 s | 9 KBi |
#10 |
Correcto
|
0.005 s | 17 KBi |
#11 |
Correcto
|
0.004 s | 11 KBi |
#12 |
Correcto
|
0.027 s | 3 KBi |
#13 |
Correcto
|
0.047 s | 3 KBi |
#14 |
Correcto
|
0.025 s | 1 KBi |
#15 |
Correcto
|
0.05 s | 3 KBi |
#16 |
Correcto
|
0.069 s | 3 KBi |
#17 |
Incorrecto
|
0.005 s | 0 KBi |
#18 |
Incorrecto
|
0.005 s | 1 KBi |
#19 |
Incorrecto
|
0.005 s | 1 KBi |
#20 |
Incorrecto
|
0.005 s | 0 KBi |
#21 |
Tiempo límite excedido
|
1.05 s | 95 KBi |
#22 |
Error en tiempo de ejecución (NZEC)
Exited with error status 137 run: line 1: 3 Killed ./a.out |
0.798 s | 125 KBi |
#23 |
Error en tiempo de ejecución (NZEC)
Exited with error status 137 run: line 1: 3 Killed ./a.out |
0.764 s | 125 KBi |
#24 |
Error en tiempo de ejecución (NZEC)
Exited with error status 137 run: line 1: 3 Killed ./a.out |
0.65 s | 125 KBi |
#25 |
Error en tiempo de ejecución (NZEC)
Exited with error status 137 run: line 1: 3 Killed ./a.out |
0.69 s | 125 KBi |
#include <iostream> #include <unordered_map> #include <unordered_set> #include <vector> using namespace std; using Permutation = unordered_map<int64_t, int64_t>; // Order matters, apply first p2 then p1 Permutation composition(const Permutation& p1, const Permutation& p2) { unordered_set<int64_t> keys; for (auto& pair: p1) { keys.insert(pair.first); } for (auto& pair: p2) { keys.insert(pair.first); } Permutation result; for (auto key: keys) { int64_t next = key; auto nextPtr = p2.find(next); if (nextPtr != p2.end()) { next = nextPtr->second; } nextPtr = p1.find(next); if (nextPtr != p1.end()) { next = nextPtr->second; } result[key] = next; } return result; } Permutation power(Permutation permutation, int64_t exponent) { if (exponent == 0) { return {}; } if (exponent == 1) { return permutation; } auto tempPerm = power(permutation, exponent / 2); if (exponent % 2 == 0) { return composition(tempPerm, tempPerm); } else { auto tempPerm2 = composition(tempPerm, tempPerm); return composition(tempPerm2, permutation); } } int main() { int N, R; cin >> N >> R; cin.ignore(1, '\n'); Permutation permutation; for(int64_t i = 0; i < N; i++) { int num; cin >> num; permutation[i] = num; } Permutation result = power(permutation, R); std::vector<int64_t> final(N, 0); for(int64_t i = 0; i < N; i++) { final[result[i]] = i + 1; } for(int64_t i = 0; i < final.size(); i++) { cout << final[i]; if (i != final.size() - 1) { cout << " "; } } return 0; }