Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <string>
- #include <algorithm>
- using namespace std;
- int minSwaps(vector<int>& arr) {
- int n = arr.size();
- vector<bool> visited(n, false);
- int cycles = 0;
- for (int i = 0; i < n; ++i) {
- if (!visited[i]) {
- cycles++;
- int j = i;
- while (!visited[j]) {
- visited[j] = true;
- j = arr[j] - 1;
- }
- }
- }
- return n - cycles;
- }
- string sortPermutation(vector<int> p, vector<int> moves) {
- int min_moves = minSwaps(p);
- string result;
- for (int move : moves) {
- if ((move >= min_moves) and ((min_moves - move) % 2 == 0)) {
- result += '1';
- } else {
- result += '0';
- }
- }
- return result;
- }
- int main() {
- // vector<int> p = {2, 3, 1, 4};
- // vector<int> moves = {2, 3};
- // vector<int> p = {4, 5, 1, 3, 2};
- // vector<int> moves = {1, 2, 3};
- vector<int> p = {3, 1, 2};
- vector<int> moves = {2, 4};
- cout << sortPermutation(p, moves) << endl; // Output: "10"
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement