Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define forn(l, r) for(int i = l; i < (r); ++i)
- #define forj(l, r) for(int j = l; j < (r); ++j)
- #define TAM 1000100
- #define SYNC ios::sync_with_stdio(0);
- #define $ << ' ' <<
- #define F first
- #define S second
- #define endl '\n'
- using namespace std;
- using ll = long long int;
- using ii = pair<int, int>;
- using vii = vector<ii>;
- using vi = vector<int>;
- using graph = vector<vi>;
- const int INF = 0x3f3f3f3f;
- const int MAXN = 200005;
- const ll mod = 1000000007;
- int fw[MAXN];
- int sum(int i) {
- int sum = 0;
- for (; i; i -= i&-i){
- sum += fw[i];
- }
- return sum;
- }
- int rangeSum (int i, int j) {
- return sum(j) - sum(i-1);
- }
- void update (int n, int i, int delta) {
- for (; i<= n; i += i&-i) {
- fw[i] += delta;
- }
- }
- void buildFW (vector<int> a, int n) {
- for (int i = 0; i <= n; ++i) {
- fw[i] = 0;
- }
- for (int i = 1; i <= n; ++i) {
- update(n, i, a[i-1]);
- }
- }
- int seq[MAXN];
- int main()
- {
- SYNC
- int n;
- vector<int> seen(MAXN);
- while (cin >> n && n) {
- seen.assign(MAXN, 0);
- int sum = 0;
- for (int i = 0; i < n; ++i) {
- cin >> seq[i];
- }
- buildFW(seen, n);
- for (int i = 0; i < n; ++i) {
- sum += rangeSum(seq[i], n);
- update(n, seq[i], 1);
- }
- if (sum&1) {
- cout << "Marcelo\n";
- } else {
- cout << "Carlos\n";
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment