func_code_string: #include <bits/stdc++.h>   using namespace std;   struct node {     int l, r;     int num;   } Treex[4000009], Treey[4000009];   map<int, int> vis;   int i;   int tot = 1;   int Tot = 1;   int x, y;   char str[5];   void update_y(int ll, int rr, int c, int l, int r, int t) {     if (ll <= l && r <= rr)       Treey[t].num = max(Treey[t].num, c);     else {       if (ll <= ((l + r) >> 1)) {         if (!Treey[t].l) Treey[t].l = ++tot;         update_y(ll, rr, c, l, ((l + r) >> 1), Treey[t].l);       }       if (rr > ((l + r) >> 1)) {         if (!Treey[t].r) Treey[t].r = ++tot;         update_y(ll, rr, c, ((l + r) >> 1) + 1, r, Treey[t].r);       }     }   }   void update_x(int ll, int rr, int c, int l, int r, int t) {     if (ll <= l && r <= rr)       Treex[t].num = max(Treex[t].num, c);     else {       if (ll <= ((l + r) >> 1)) {         if (!Treex[t].l) Treex[t].l = ++Tot;         update_x(ll, rr, c, l, ((l + r) >> 1), Treex[t].l);       }       if (rr > ((l + r) >> 1)) {         if (!Treex[t].r) Treex[t].r = ++Tot;         update_x(ll, rr, c, ((l + r) >> 1) + 1, r, Treex[t].r);       }     }   }   void query_x(int c, int l, int r, int rt) {     i = max(i, Treex[rt].num);     if (l == r) return;     if (((l + r) >> 1) >= c)       query_x(c, l, ((l + r) >> 1), Treex[rt].l);     else       query_x(c, ((l + r) >> 1) + 1, r, Treex[rt].r);   }   void query_y(int c, int l, int r, int rt) {     i = max(i, Treey[rt].num);     if (l == r) return;     if (((l + r) >> 1) >= c)       query_y(c, l, ((l + r) >> 1), Treey[rt].l);     else       query_y(c, ((l + r) >> 1) + 1, r, Treey[rt].r);   }   int main() {     int n, q;     scanf( %d%d , &n, &q);     update_x(0, n, 0, 0, n, 1);     update_y(0, n, 0, 0, n, 1);     while (q--) {       scanf( %d%d%s , &x, &y, str);       if (vis[x]) {         puts( 0 );       } else {         vis[x] = 1;         i = 0;         if (str[0] ==  U ) {           query_x(x, 0, n, 1);           printf( %d n , y - i);           update_y(i, y, x, 0, n, 1);         } else {           query_y(y, 0, n, 1);           printf( %d n , x - i);           update_x(i, x, y, 0, n, 1);         }       }     }     return 0;   }   