func_code_string: #include <bits/stdc++.h>   using namespace std;   struct wut {     int op;     int val;     int nval;     wut() {}     wut(int a, int b) : op(a), val(b) {}   };   struct node {     long long sum[5];     int ile;     node() {       for (int i = 0; i < (5); ++i) sum[i] = 0;       ile = 0;     }   };   const int N = 100010;   wut tab[N];   int n;   char tax[10];   int c;   set<int> h;   map<int, int> et;   node tree[3 * N];   int roz;   void insert(int value, int pos, bool add) {     pos = roz + pos - 1;     if (add) {       tree[pos].sum[0] += value;       tree[pos].ile++;     } else {       tree[pos].sum[0] -= value;       tree[pos].ile--;     }     while (pos >> 1) {       for (int i = 0; i < (5); ++i)         tree[pos >> 1].sum[i] = tree[(pos >> 1) << 1].sum[i];       for (int i = 0; i < (5); ++i) {         tree[pos >> 1].sum[i] +=             tree[((pos >> 1) << 1) + 1]                 .sum[(((i - tree[(pos >> 1) << 1].ile) % 5) + 5) % 5];       }       tree[pos >> 1].ile =           tree[(pos >> 1) << 1].ile + tree[((pos >> 1) << 1) + 1].ile;       pos >>= 1;     }   }   long long query() { return tree[1].sum[2]; }   int main() {     scanf( %d , &n);     for (int i = 0; i < (n); ++i) {       scanf( %s %d , tax, &c);       if (tax[0] ==  a )         tab[i] = wut(0, c);       else if (tax[0] ==  d )         tab[i] = wut(1, c);       else         tab[i] = wut(2, 0);       if (tab[i].op <= 1) h.insert(tab[i].val);     }     int ind = 0;     for (typeof((h).begin()) p = ((h).begin()); p != (h).end(); ++p) {       et[*p] = ++ind;     }     for (int i = 0; i < (n); ++i)       if (tab[i].op <= 1) {         tab[i].nval = et[tab[i].val];       }     roz = 1;     while (roz < ind) roz <<= 1;     for (int i = 0; i < (n); ++i) {       if (tab[i].op == 2) {         cout << query() << endl;       } else {         insert(tab[i].val, tab[i].nval, !tab[i].op);       }     }   }   