func_code_string: #include <bits/stdc++.h>   using namespace std;   int read() {     int x = 0, sgn = 1;     char ch = getchar();     for (; !isdigit(ch); ch = getchar())       if (ch ==  - ) sgn = -1;     for (; isdigit(ch); ch = getchar()) x = (x << 1) + (x << 3) + (ch ^ 48);     return x * sgn;   }   const int N = 1e5 + 10;   int n, b[N << 1], tot, l[N], r[N], deg[N << 1], h[N << 1], cnt = 1, now[N << 1],                                                              ans[N << 1];   struct edge {     int v, w, nxt;   } e[N << 2];   bool v[N << 2], vis[N << 1];   void link(int x, int y, int w) {     e[++cnt] = (edge){y, w, h[x]};     h[x] = cnt;   }   void dfs(int x) {     vis[x] = 1;     for (int i = now[x], y; i; i = e[now[x]].nxt) {       now[x] = i;       if (v[i]) continue;       y = e[i].v;       v[i] = v[i ^ 1] = 1;       ans[e[i].w] = x < y;       dfs(y);     }   }   int main() {     n = read();     for (int i = 1; i <= n; i++)       b[++tot] = l[i] = read(), b[++tot] = r[i] = read() + 1;     sort(b + 1, b + tot + 1);     tot = unique(b + 1, b + tot + 1) - b - 1;     for (int i = 1; i <= n; i++) {       l[i] = lower_bound(b + 1, b + tot + 1, l[i]) - b;       r[i] = lower_bound(b + 1, b + tot + 1, r[i]) - b;       deg[l[i]]++;       deg[r[i]]++;       link(l[i], r[i], i);       link(r[i], l[i], i);     }     int lst = 0;     for (int i = 1; i <= tot; i++) {       if (!(deg[i] & 1)) continue;       if (lst)         link(lst, i, 0), link(i, lst, 0), lst = 0;       else         lst = i;     }     for (int i = 1; i <= tot; i++) now[i] = h[i];     for (int i = 1; i <= tot; i++)       if (!vis[i]) dfs(i);     for (int i = 1; i <= n; i++) {       if (ans[i])         printf( 1  );       else         printf( 0  );     }     return 0;   }   