Caps

Time limit: 0.2s Memory limit: 64MB Input: caps.in Output: caps.outPoints by default: 10p

Miruna a descoperit un nou joc. Ea dispune de litere mari și mici ale alfabetului englez și construiește succesiv șiruri de litere din ce în ce mai lungi. Ea definește operația CAPS a unei litere, ca fiind transformarea literei respective din literă mare în literă mică sau invers, din litera mică în literă mare. Pentru fiecare șir SS, Miruna asociază un nou șir SCS_C, numit șir CAPS, care se obține aplicând operația CAPS asupra tuturor literelor din șirul SS. Miruna a inventat o altă operație pentru un șir de litere SS, numită NEXT, prin care obține un nou șir SNS_N care are structura SScScSSS_cS_cS (este format în ordine de la stânga la dreapta din literele lui SS, apoi de două ori succesiv literele șirului SCS_C, iar apoi urmează din nou literele șirului SS). De exemplu, șirului S=S = Ham îi corespunde șirul CAPS SC=S_C = hAM și dacă se aplică și operația NEXT asupra șirului SS, obține șirul SN=S_N = HamhAMhAMHam. Inițial, Miruna construiește un șir SS de KK litere. Apoi, ea construiește un nou șir obținut prin aplicarea operației NEXT asupra șirului SS. Miruna dorește să obțină succesiv șiruri de litere din ce în ce mai lungi aplicând operația NEXT asupra șirului construit în etapa precedentă.

Astfel, pentru K=3K=3 și S=S = Ham, Miruna va construi șirurile HamhAMhAMHam, HamhAMhAMHamhAMHamHamhAMhAMHamHamhAMHamhAMhAMHam și așa mai departe. Miruna continuă procedeul de construire până când obține un șir final suficient de lung.

Cerințe

Miruna vă roagă să răspundeți la QQ întrebări de tipul:
„Dacă se dă un număr natural NN, ce literă este în șirul final pe poziția NN și de câte ori a apărut această literă în șirul final, de la începutul șirului final până la poziția NN inclusiv?”.

Date de intrare

Pe prima linie a fișierului caps.in se află două numere naturale separate prin spațiu reprezentând valorile KK (lungimea șirului inițial) și QQ (numărul de interogări). Pe linia următoare se află șirul inițial SS de lungime KK. Pe următoarele QQ linii se va afla câte un număr NN, reprezentând cerința unei întrebări.

Date de ieșire

În fișierul de ieșire caps.out, se vor afla QQ linii, iar pe fiecare linie câte două valori separate cu un spațiu reprezentând răspunsul la o întrebare (litera de pe poziția NN în șirul final și numărul său de apariții până la poziția NN inclusiv).

Restricții și precizări

  • 1<K100 0001 < K \leq 100 \ 000
  • 1Q50 0001 \leq Q \leq 50 \ 000
  • 0<N10180 < N \leq 10^{18}
  • Pentru fiecare test se acordă 40%40\% din punctaj dacă toate literele interogărilor din test sunt corecte și 60%60\% din punctaj dacă toate numerele de apariții ale literelor, până la pozițiile NN din interogările testului, sunt corecte.
  • Miruna vă garantează că a construit un șir final de lungime mai mare decât NN.
  • Prima poziție în șir este considerată poziția 11.
# Punctaj Restricții
1 15 K250K \leq 250, Q1 000Q \leq 1 \ 000, N3 000N \leq 3 \ 000
2 20 N100 000N \leq 100 \ 000
3 20 K3 000K \leq 3 \ 000, Q1 000Q \leq 1 \ 000
4 35 Fără restricții suplimentare.

Exemplu

caps.in

3 1		
Ham
5 

caps.out

A 1

Explicație

Pe poziția 55 se va afla litera A, numărul de apariții al ei de la poziția 11 la poziția 55 este 11.

Log in or sign up to be able to send submissions!