#include #define MAX_B 10000 // 28-Z1-3 // Karolína Burešová int main(void) { long b, j, k; long pozice[MAX_B+1]; long v_bloku = 0; scanf("%ld%ld%ld", &b, &j, &k); for (int i=1; i<=b; i++) { int strom; scanf("%d", &strom); // Zajímá nás, kolik stromů určeného druhu se v bloku nachází // a také, na které pozici v bloku je kolikátý strom určeného druhu if (strom == j) { v_bloku++; pozice[v_bloku] = i; } } // Tohle je tak trošku HACK // Umožňuje jednoduše řešit případy, kdy zkoumaný výskyt je // posledním výskytem určeného druhu v bloku pozice[0] = -1 * (b - pozice[v_bloku]); // Nejprve uvidíme nějaké množství celých bloků // a pak ještě několik dalších stromů printf("%ld\n", (k / v_bloku) * b + pozice[k % v_bloku]); return 0; }