func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 1e5 + 5;   struct P {     int t, id;     bool operator<(const P &tmp) const {       if (t != tmp.t) return t < tmp.t;       return id < tmp.id;     }   } p[N];   priority_queue<int, vector<int>, greater<int> > qu;   queue<int> q;   set<int> s;   long long ans[N];   int n, t;   long long now = 0, ed = -1, nid = 0;   void gao() {     if (qu.empty()) return;     int x = qu.top();     if (!s.empty() && (*s.begin()) < x) return;     if (q.empty()) ed += t;     qu.pop();     q.push(x);     s.insert(x);   }   int main() {     scanf( %d%d , &n, &t);     for (int i = 0; i < n; i++) scanf( %d , &p[i].t), p[i].id = i;     sort(p, p + n);     while (true) {       if (nid < n && (ed >= p[nid].t || q.empty())) {         now = p[nid].t;         if (!s.empty() && (*s.begin()) < p[nid].id)           qu.push(p[nid].id);         else if (ed == p[nid].t)           qu.push(p[nid].id);         else {           if (q.empty()) ed = now + t;           q.push(p[nid].id);           s.insert(p[nid].id);         }         nid++;       } else if (!q.empty()) {         int x = q.front();         q.pop();         now = max(now, ed);         s.erase(x);         ans[x] = ed;         if (!q.empty()) ed += t;         gao();       } else         break;     }     for (int i = 0; i < n; i++) printf( %lld  , ans[i]);     return 0;   }   