jueves, 20 de octubre de 2011

11495 - Bubbles and Buckets - UVA

#include<cstdio>
using namespace std;
int lista[100000], res = 0;
void merge(const int& ini, const int& med, const int& fin) {
 int i = ini;
 int j = med + 1;
 int k = 0;
 int vector[fin - ini + 1];
 while (i <= med && j <= fin) {
  if(lista[i] <= lista[j])
   vector[k++] = lista[i++];
  else
   vector[k++] = lista[j++], res += med - i + 1;
 }
 while (i <= med) vector[k++] = lista[i++];
 while (j <= fin) vector[k++] = lista[j++];
 
 for (i = 0; i < k; i++) lista[ini + i] = vector[i];
 
}
void merge_sort(const int& ini, const int& fin) {
 if (ini < fin) {
  int med = (ini + fin) / 2;
  merge_sort(ini, med);
  merge_sort(med + 1, fin);
  merge(ini, med, fin);
 }
}
int main() {
 int n;
 while(scanf("%d", &n) && n) {
  res = 0;
  for (int i = 0; i < n; i++)
   scanf("%d", lista + i);
  merge_sort(0, n - 1);
  if(res % 2 == 0) 
   puts("Carlos");
  else
   puts("Marcelo");
 }
 return 0;
}

No hay comentarios:

Publicar un comentario