func_code_string: #include <bits/stdc++.h>   using namespace std;   struct ww {     long long x, y;   } c[400][400];   int i, j, k, n, m, ma, ren, C, kuai;   int cov[400], zhi[400];   long long b[400][400], s[400][400];   vector<int> a[100010];   inline void gao(int x) {     int i, n = kuai - 1, g[400], r = 0;     long long jum[400];     for (i = 0; i <= n; i++) b[x][i] += cov[x];     cov[x] = 0;     s[x][0] = b[x][0];     for (i = 1; i <= n; i++) s[x][i] = s[x][i - 1] + b[x][i];     for (i = 0; i <= n; i++) {       long long A = s[x][i], F = 0;       for (; r; r--) {         int wei = g[r];         long long B = s[x][wei];         int cha = i - wei;         if (A >= B) continue;         long long ci = (B - A) / cha + ((B - A) % cha > 0);         if (jum[r] >= ci)           continue;         else {           F = ci;           break;         }       }       g[++r] = i, jum[r] = F;     }     jum[r + 1] = 100010;     for (i = 1; i <= r; i++) c[x][i] = (ww){g[i], jum[i + 1]};     zhi[x] = 1;   }   inline void jian(int x) {     int A = x / kuai, B = x % kuai;     b[A][B] -= x;     gao(A);   }   inline void jia(int x) {     if (x < 0) return;     int A = x / kuai, B = x % kuai, i;     for (i = 0; i <= A - 1; i++) {       cov[i]++;       if (c[i][zhi[i]].y == cov[i]) zhi[i]++;     }     for (i = 0; i <= B; i++) b[A][i]++;     gao(A);   }   inline long long suan(int x) {     ww A = c[x][zhi[x]];     return s[x][A.x] + 1ll * cov[x] * (A.x + 1);   }   inline ww cal() {     int i, id;     long long ma, sum;     ma = -1, sum = 0;     for (i = 0; i <= 400 - 1; i++) {       long long re = sum + suan(i);       if (re > ma) ma = re, id = i * kuai + c[i][zhi[i]].x;       sum += s[i][kuai - 1] + 1ll * cov[i] * kuai;     }     return (ww){ma, id};   }   int main() {     kuai = 300;     scanf( %d%d , &n, &m);     for (i = 1; i <= n; i++) {       int x, y;       scanf( %d%d , &x, &y);       a[y].push_back(x - 1);       ma = max(ma, y);     }     for (i = 0; i <= 400 - 1; i++) gao(i);     ren = n;     for (C = 0; C <= ma + 1; C++) {       ww re = cal();       printf( %I64d %I64d n , 1ll * ren * C * m + re.x, re.y + 1);       for (j = 0; j < a[C].size(); j++) {         int A = a[C][j];         ren--;         jia(A);         jian(A + 1);       }     }     return 0;   }   