fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. using ll = long long int;
  4. #define MAX (ll) (1e5+7)
  5. #define MOD (ll) (1e9+7)
  6.  
  7. void add(ll*bit,ll idx,ll val)
  8. {
  9. while(idx<=MAX)
  10. {
  11. bit[idx]+=val;
  12. idx+=(idx&(-idx));
  13. }
  14. }
  15.  
  16. ll query(ll*bit,ll idx)
  17. {
  18. ll su = 0;
  19. while(idx>0)
  20. {
  21. su+=bit[idx];
  22. idx-=(idx&(-idx));
  23. }
  24. return su;
  25. }
  26.  
  27. int main()
  28. {
  29. ll n;
  30. cin>>n;
  31. string st;
  32. ll pr;
  33. ll bit[MAX];
  34. memset(bit,0,sizeof(bit));
  35. map<string,ll> ma;
  36. ll maxi = 0;
  37. for(int i=0;i<n;i++)
  38. {
  39. cin>>st>>pr;
  40. maxi = max(maxi,pr);
  41. ma[st] = pr;
  42. }
  43. ll qq;
  44. cin>>qq;
  45. while(qq--)
  46. {
  47. char x;
  48. cin>>x;
  49. if(x == '+')
  50. {
  51. string qu;
  52. cin>>qu;
  53. add(bit,ma[qu],1);
  54. }
  55. else if(x=='-')
  56. {
  57. string qu;
  58. cin>>qu;
  59. add(bit,ma[qu],-1);
  60. }
  61. else if(x == '?')
  62. {
  63. ll yy;
  64. cin>>yy;
  65. ll res = query(bit,maxi)-query(bit,yy);
  66. cout<<res<<"\n";
  67. }
  68. }
  69. }
Success #stdin #stdout 0s 5576KB
stdin
Standard input is empty
stdout
Standard output is empty