Untitled
unknown
plain_text
2 years ago
1.6 kB
16
Indexable
#include <iostream>
#include <vector>
#include <fstream>
#include <string>
#include <algorithm>
#include <functional>
using namespace std;
int moves(vector<int> arr) {
int n = arr.size();
int even_index = 0;
int odd_index = n - 1;
int move_count = 0;
while (even_index < odd_index) {
// Find the first odd number from the left
while (even_index < n && arr[even_index] % 2 == 0) {
even_index++;
}
// Find the first even number from the right
while (odd_index >= 0 && arr[odd_index] % 2 != 0) {
odd_index--;
}
// Swap the odd number from the left with the even number from the right
if (even_index < odd_index) {
swap(arr[even_index], arr[odd_index]);
move_count++;
}
}
return move_count;
}
// Helper functions to trim whitespace from strings
string ltrim(const string &str) {
return str.substr(str.find_first_not_of(' '));
}
string rtrim(const string &str) {
return str.substr(0, str.find_last_not_of(' ') + 1);
}
int main() {
ofstream fout(getenv("OUTPUT_PATH"));
string arr_count_temp;
getline(cin, arr_count_temp);
int arr_count = stoi(ltrim(rtrim(arr_count_temp)));
vector<int> arr(arr_count);
for (int i = 0; i < arr_count; i++) {
string arr_item_temp;
getline(cin, arr_item_temp);
int arr_item = stoi(ltrim(rtrim(arr_item_temp)));
arr[i] = arr_item;
}
int result = moves(arr);
fout << result << endl;
fout.close();
return 0;
}
Editor is loading...
Leave a Comment