func_code_string: #include <bits/stdc++.h>   using namespace std;   template <class T>   inline void amin(T &a, const T &b) {     if (b < a) a = b;   }   template <class T>   inline void amax(T &a, const T &b) {     if (a < b) a = b;   }   struct Data {     int sx, sy;     int le, ri, to, bo;     bool operator<(const Data &y) const { return sx < y.sx; }   };   int N, Q;   int main() {     scanf( %d%d , &N, &Q);     set<Data> S;     S.insert((Data){1, 1, 1, N, 1, N});     Data seek;     for (int $ = 0, $_len = (Q); $ < $_len; ++$) {       int col, row;       char buf[8], dir;       scanf( %d%d%s , &col, &row, buf);       dir = buf[0];       int ans = 0;       seek.sx = col;       set<Data>::iterator it = S.upper_bound(seek);       if (it != S.begin()) {         it--;         if (it->sx <= col && col <= it->ri) {           Data D = *it;           S.erase(it);           if (dir ==  U ) {             ans = row - D.to + 1;             if (D.sx < col)               S.insert((Data){D.sx, row + 1, D.le, col - 1, D.to, D.bo});             if (col < D.ri)               S.insert((Data){col + 1, D.sy, col + 1, D.ri, D.to, row - 1});           } else {             ans = col - D.le + 1;             if (D.sy < row)               S.insert((Data){col + 1, D.sy, D.le, D.ri, D.to, row - 1});             if (row < D.bo)               S.insert((Data){D.sx, row + 1, D.le, col - 1, row + 1, D.bo});           }         } else {           ans = 0;         }       } else {         ans = 0;       }       printf( %d n , ans);     }     return 0;   }   