func_code_string: #include <bits/stdc++.h>   using namespace std;   struct point {     int x, y;     inline bool operator<(const point &a) const { return x < a.x; }   } arr[100005];   struct query_tp {     int col, l, r, delta;     query_tp() {}     query_tp(int _col, int _l, int _r, int _delta) {       col = _col;       l = _l;       r = _r;       delta = _delta;     }     inline bool operator<(const query_tp &a) const { return col < a.col; }   };   long long ans[100005];   int main() {     int n, k;     scanf( %d%d , &n, &k);     for (int i = 0; i < n; i++) scanf( %d%d , &arr[i].x, &arr[i].y);     sort(arr, arr + n);     vector<query_tp> query;     vector<int> app;     for (int i = 0; i < n; i++) {       int l = arr[i].x - k;       if (app.size()) l = max(l, *app.rbegin());       for (int j = l + 1; j <= arr[i].x; j++) app.push_back(j);       query.push_back(query_tp(arr[i].y - k + 1, arr[i].x - k + 1, arr[i].x, 1));       query.push_back(query_tp(arr[i].y + 1, arr[i].x - k + 1, arr[i].x, -1));     }     sort(query.begin(), query.end());     int cnt = app.size(), q_cnt = query.size();     for (int i = 0; i < q_cnt; i++) {       query[i].l = lower_bound(app.begin(), app.end(), query[i].l) - app.begin();       query[i].r = lower_bound(app.begin(), app.end(), query[i].r) - app.begin();     }     app.clear();     vector<int>().swap(app);     vector<int> lst(cnt, -1e9), num(cnt, 0);     for (int i = 0; i < q_cnt; i++) {       for (int j = query[i].l; j <= query[i].r; j++) {         if (lst[j] != -1e9) ans[num[j]] += query[i].col - lst[j];         num[j] += query[i].delta;         lst[j] = query[i].col;       }     }     for (int i = 1; i <= n; i++) printf( %lld%c , ans[i],    n [i == n]);     return 0;   }   