Pesunöör

시간 제한2초메모리 제한1024 MB

요약
P, R, S로 이루어진 문자열에서 구간의 색별 개수를 세고, 구간을 앞이나 뒤로 옮기거나 뒤집는 질의를 처리한다.
난이도

어려움10점 중 8점

유형
세그먼트 트리, 구현, 문자열, 분할 정복
정답자
아직 제출이 없습니다

문제

Jukul on palju programmeerimisvõistlustelt saadud punaseid, rohelisi ja siniseid särke. Ta pesi need ära ja pani järjest pesunöörile. Aga talle ei meeldinud särkide suvaline paigutus nööril. Seetõttu arvutas ta välja kõige ilusama särkide paigutuse ja ka särkide liigutamised, mida selle saavutamiseks tuleb teha. Siiski soovib Juku liigutamiste vahel kontrollida, kas kõik tema särgid on ikka alles. Selleks tahab ta teada, kui palju mingit värvi särke on nööri mingis lõigus.

입력

Esimesel real on antud arvud NN ja QQ (1≤N≤1051 \le N \le 10^5, 1≤Q≤1051 \le Q \le 10^5): vastavalt Juku särkide arv ja päringute arv.

Teisel real on NN tähest koosnev sõne: särkide esialgne järjestus, kus P tähistab punast, R rohelist ja S sinist värvi särki.

Järgmisel QQ real on Juku päringud kujul TT LL RR (1≤L≤R≤N1 \le L \le R \le N), kus TT on päringu tüüp ning LL ja RR on särkide asukohad, millele päring rakendub.

Päringuid on kuut erinevat tüüpi:

  1. Kui TT on PUNASEID, tahab Juku teada, mitu punast särki on pesunööril lõigus LL kuni RR.
  2. Kui TT on ROHELISI, tahab Juku teada, mitu rohelist särki on pesunööril lõigus LL kuni RR.
  3. Kui TT on SINISEID, tahab Juku teada, mitu sinist särki on pesunööril lõigus LL kuni RR.
  4. Kui TT on ETTE, lõikab Juku pesunööri lõigu LL kuni RR välja ja seob selle nööri algusesse. Et särgid maha ei kukuks, seob Juku lõigu eemaldamisel tekkinud otsad omavahel kokku.
  5. Kui TT on TAHA, lõikab Juku pesunööri lõigu LL kuni RR välja ja seob selle nööri lõppu. Et särgid maha ei kukuks, seob Juku lõigu eemaldamisel tekkinud otsad omavahel kokku.
  6. Kui TT on POORA, lõikab Juku pesunööri lõigu LL kuni RR välja, pöörab selle ümber ja seob selle nööri tagasi.

출력

Iga PUNASEID, ROHELISI või SINISEID tüüpi päringu kohta väljastada eraldi reale üks arv, mis vastab Juku küsimusele.

예제1

  1. 예제 1

    입력
    5 6
    PPSRR
    POORA 1 3
    PUNASEID 1 1
    ETTE 4 5
    ROHELISI 1 2
    TAHA 1 2
    SINISEID 1 1
    
    예상 출력
    0
    2
    1