45 lines
1.0 KiB
C++
45 lines
1.0 KiB
C++
#include <bits/stdc++.h>
|
|
|
|
using namespace std;
|
|
typedef long long ll;
|
|
|
|
ll countInversions(vector<int> &seq, int left, int right) {
|
|
if (left >= right) {
|
|
return 0;
|
|
}
|
|
|
|
int middle = (left + right)/2;
|
|
ll inversions = 0;
|
|
inversions += countInversions(seq, left, middle);
|
|
inversions += countInversions(seq, middle + 1, right);
|
|
|
|
vector<int> l(seq.begin() + left, seq.begin() + middle + 1);
|
|
vector<int> r(seq.begin() + middle + 1, seq.begin() + right + 1);
|
|
|
|
int leftSize = l.size(), rightSize = r.size();
|
|
|
|
for (int i = 0, j = 0; i < leftSize || j < rightSize;) {
|
|
if (i >= leftSize || (j < rightSize && r[j] < l[i])) {
|
|
seq[left++] = r[j++];
|
|
inversions += ((ll)leftSize - (ll)i);
|
|
} else {
|
|
seq[left++] = l[i++];
|
|
}
|
|
}
|
|
|
|
return inversions;
|
|
}
|
|
|
|
int main()
|
|
{
|
|
int N; cin >> N;
|
|
vector<int> seq(N);
|
|
for (int i = 0; i < N; i++) cin >> seq[i];
|
|
|
|
if (countInversions(seq, 0, N - 1) & 1) {
|
|
cout << "Marcelo" << endl;
|
|
} else {
|
|
cout << "Carlos" << endl;
|
|
}
|
|
return 0;
|
|
} |