Mostrando entradas con la etiqueta PKU. Mostrar todas las entradas
Mostrando entradas con la etiqueta PKU. Mostrar todas las entradas

miércoles, 19 de octubre de 2011

PKU 3517 And Then There Was One

#include<cstdio>
#include<iostream>
#define db(a) cout << #a << " = " << a << endl;
#define db2(a, b) cout << #a << " = " << a << " " << #b << " = " << b << endl;
#define db3(a, b, c) cout << #a << " = " << a << " " << #b << " = " << b << " " << #c << " = " << c << endl;
using namespace std;
int lista[10000];
bool func_del(int a) {
 return a == -1;
}
int* borrar_si(int *ini, int *fin) {
 int *hasta = ini;
 for (; ini != fin; ini++) {
  if (!func_del(*ini)) *hasta++ = *ini;
 }
 return hasta;
}
int main() {
 int n, k, m;
 while ( scanf("%d%d%d", &n, &k, &m) ) {
  if (n == 0 && k == 0 && m == 0) break;
  for (int i = 0; i < n; i++) lista[i] = i + 1;
  int start = m - 1;
  int n2 = n;
  for (int i = 0; i < n - 1; i++) {
   lista[start] = -1;
   start += k;
   if(start >= n2) {
    start -= n2;
    n2 = borrar_si (lista, lista + n2) - lista;
    start %= n2;
   }
  }
  for (int i = 0; i < n2; i++) 
   if(lista[i] != - 1) {
    printf("%d\n", lista[i]);
    break;
   }
 }
 return 0;
}