#include #include #include #include #include #include using namespace std; int ALL,CNT; int P[2<<17]; bool S[2<<17]; vectoridx[2<<17]; vectornxt[2<<17]; int ac[2<<17]; int L[2<<17],R[2<<17]; void inc(int); void dec(int); void push_front(int id) { dec(P[id]); L[P[id]]--; if(S[id])ac[P[id]]++; inc(P[id]); } void push_back(int id) { dec(P[id]); R[P[id]]++; if(S[id])ac[P[id]]++; inc(P[id]); } void pop_front(int id) { dec(P[id]); L[P[id]]++; if(S[id])ac[P[id]]--; inc(P[id]); } void pop_back(int id) { dec(P[id]); R[P[id]]--; if(S[id])ac[P[id]]--; inc(P[id]); } void dec(int p) { if(ac[p]>=1) { ALL-=nxt[p][L[p]]; CNT--; } } void inc(int p) { if(ac[p]>=1) { ALL+=nxt[p][L[p]]; CNT++; } } int N,M,Q; const int B=500; const int MN=200000; vector > >qR[(MN+B-1)/B]; int cnt[2<<17],ans[2<<17]; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cin>>N>>M>>Q; for(int i=0;i>P[i]>>s; P[i]--; S[i]=s=="AC"; idx[P[i]].push_back(i); } for(int i=0;i>l>>r; l--; qR[l/B].push_back(make_pair(r,make_pair(l,i))); } int nL=0,nR=0; for(int li=0;li*B >&l,const pair >&r) { return l.first>r.first; }); } else { sort(qR[li].begin(),qR[li].end(),[&li](const pair >&l,const pair >&r) { return l.first >p:qR[li]) { int l=p.second.first; int r=p.first; while(nL>l)push_front(--nL); while(nRr)pop_back(--nR); cnt[p.second.second]=CNT; ans[p.second.second]=ALL; } } for(int i=0;i