// yukicoder: No. 702 中央値を求めよ LIMITED // 2019.5.5 bal4u #include unsigned x = 0, y = 1, z = 2, w = 3; unsigned generate() { unsigned t = x^(x<<11); x = y, y = z, z = w; w = (w ^ (w >> 19)) ^ (t ^ (t >> 8)); return w; } #define SIZE 10000001 #define UPPER 2150000000U #define LOWER 2146000000U char a[UPPER-LOWER+10]; int main() { int i, cnt; unsigned k; scanf("%u", &x); cnt = 0; i = SIZE; while (i--) { k = generate(); if (k <= LOWER) cnt++; else if (k < UPPER) a[k - LOWER]++; } cnt = (SIZE >> 1)-cnt; i = 0; while (cnt >= 0) { if (a[++i]) cnt -= a[i]; } printf("%u\n", LOWER + i); return 0; }