#include #include using namespace std; using namespace atcoder; typedef long long ll; typedef long double ld; #define REP(i, n) for (int i = 0; i < (n); ++i) #define REPR(i, n) for (int i = n - 1; i >= 0; --i) #define FOR(i, m, n) for (int i = m; i < n; ++i) #define FORR(i, m, n) for (int i = m; i >= n; --i) #define ALL(v) (v).begin(),(v).end() #define ALLR(v) (v).rbegin(),(v).rend() #define fi first #define se second #define PB push_back #define EB emplace_back template using PQ = priority_queue; template using QP = priority_queue,greater>; templatevoid debug(const T &v,ll h,ll w){for(ll i=0;ivoid debug(const T &v,ll n){for(ll i=0;ivoid debug(const vector&v){debug(v,v.size());} templatevoid debug(const vector>&v){for(auto &vv:v)debug(vv,vv.size());} templatevoid debug(stack st){while(!st.empty()){cerr<void debug(queue st){while(!st.empty()){cerr<void debug(deque st){while(!st.empty()){cerr<void debug(PQ st){while(!st.empty()){cerr<void debug(QP st){while(!st.empty()){cerr<void debug(const set&v){for(auto z:v)cerr<void debug(const multiset&v){for(auto z:v)cerr<void debug(const array &a){for(auto z:a)cerr<void debug(const map&v){for(auto z:v)cerr<<"["<void foo(Head&& head, Tail&&... tail){cerr << head << " ";foo(move(tail)...);} templatebool chmax(T &a, const T &b) { if (abool chmin(T &a, const T &b) { if (b> n; vector l(n); REP(i,n) cin >> l[i]; int t;cin >> t; map a; vector b(n,1); vector s(t); vector p(t); vector> x; REP(i,t){ cin >> s[i] >> p[i]; if(p[i]=='?') continue; int id=p[i]-'A'; a[s[i]]+=sc(l[id],b[id]); b[id]++; x.PB({a[s[i]],-i}); } int m=x.size(); sort(ALLR(x)); map,int> pt; REP(i,m) pt[x[i]]=i; map aa,c; vector bb(n,1); segtree seg(m); // REP(i,m) foo(x[i].fi,x[i].se); REP(i,t){ if(p[i]!='?'){ int id=p[i]-'A'; if(pt.count({aa[s[i]],-c[s[i]]})) seg.set(pt[{aa[s[i]],-c[s[i]]}],0); aa[s[i]]+=sc(l[id],bb[id]); bb[id]++; c[s[i]]=i; // foo(i,aa[s[i]],s[i]); seg.set(pt[{aa[s[i]],-i}],1); } else{ int id=pt[{aa[s[i]],-c[s[i]]}]; cout << seg.prod(0,id)+1 << endl; } // REP(j,m) cerr << seg.get(j) << " "; // cerr << endl; } }