====== Sepidedam ====== علی در هنگام انجام دوی صبحگاهی به دستگاه عجیبی برخورد کرد. در این دستگاه $n$ عدد دور دایره در جایگاه‌های $0$ تا $n - 1$ نوشته شده‌اند و یک دکمه زیر این دایره قرار داده شده است. پس از بررسی‌های فراوان علی به این نتیجه رسید که با زدن دکمه‌ی دستگاه عملیات زیر انجام می‌شود: اگر پیش از زدن دکمه‌ی دستگاه در جایگاه $i$ ام عدد $a_i$ و پس از زدن دکمه‌ی دستگاه در این جایگاه عدد $b_i$ نوشته شده باشد: $$b_i = a_{(i + c_0) \operatorname{mod} n} \oplus a_{(i + c_1) \operatorname{mod} n} \oplus \ldots \oplus a_{(i + c_{k - 1}) \operatorname{mod} n}$$ برنامه‌ای بنویسید که مشخص کند اعداد پس از $t$ بار فشرده شدن دکمه چه تغییری می‌کنند. ===== پیاده‌سازی ===== در این سوال شما باید توابع زیر را پیاده‌سازی کنید. *''void getStatus(int n, int *a, int k, int *c, string ts, int *ans)'' این تابع دقیقا یک‌بار فراخوانی می‌شود. آن را طوری پیاده‌سازی کنید که اعداد نهایی را در آرایه‌ی مربوطه بنویسد. * $n$: تعداد اعداد دستگاه * $a$: آرایه‌ای به طول $n$. در ابتدا در جایگاه $i$ $(0 \le i \le n - 1)$ ام دور دایره عدد $a_i$ نوشته شده است. * $k$: تعداد اعضای آرایه‌ی $c$ * $c$: آرایه‌ای به طول $k$. معادل آرایه‌ی $c$ در متن سوال. * $ts$: تعداد دفعات فشرده شدن دکمه‌ی دستگاه در مبنای دو. * $ans$: آرایه‌ای به طول $n$. وضعیت دستگاه را، پس از $t$ بار فشرده شدن دکمه، در این آرایه بریزید. ===== ارزیاب نمونه ===== ارزیاب نمونه ورودی را به صورت زیر می‌خواند: - در خط اول یک رشته به طول $n$ آمده است که هر حرف آن صفر یا یک است و حرف $i$ $(0 \le i \le n - 1)$ام آن برابر $a_i$ است. - در خط دوم یک رشته به طول $n$ آمده است که هر حرف آن صفر یا یک است و اگر حرف $i$ $(0 \le i \le n - 1)$ ام آن یک باشد، عدد $i$ در دنباله‌ی $c$ آمده است. - در خط سوم یک رشته آمده است که برابر با عدد $t$ در مبنای دو است. ===== زیرمسئله‌ها ===== * زیرمسئله‌ی اول (۷۵ نمره): $k \times n \le 10^5$. * زیرمسئله‌ی دوم (۲۵ نمره): بدون محدودیت اضافی. ===== محدودیت‌ها ===== * محدودیت زمان: ۵ ثانیه * محدودیت حافظه: ۲۵۶ مگابایت * $1 \le n, k \le 10^5$ * $1 \le |ts| \le 10^5$ * حداکثر $15$ عدد یک در $ts$ وجود دارد. ===== ورودی و خروجی نمونه ===== ^ ورودی نمونه ^ خروجی نمونه ^ |1010 \\ 0100 \\ 1|0101| * [[سوال ۵|سوال بعد]] * [[سوال ۳|سوال قبل]]