func_code_string: #include <bits/stdc++.h>   using namespace std;   template <typename T, typename U>   inline void smin(T &a, const U &b) {     if (a > b) a = b;   }   template <typename T, typename U>   inline void smax(T &a, const U &b) {     if (a < b) a = b;   }   template <class T>   inline void gn(T &first) {     char c, sg = 0;     while (c = getchar(), (c >  9  || c <  0 ) && c !=  - )       ;     for ((c ==  -  ? sg = 1, c = getchar() : 0), first = 0; c >=  0  && c <=  9 ;          c = getchar())       first = (first << 1) + (first << 3) + c -  0 ;     if (sg) first = -first;   }   template <class T1, class T2>   inline void gn(T1 &x1, T2 &x2) {     gn(x1), gn(x2);   }   int power(int a, int b, int m, int ans = 1) {     for (; b; b >>= 1, a = 1LL * a * a % m)       if (b & 1) ans = 1LL * ans * a % m;     return ans;   }   int main() {     int n, m;     cin >> n >> m;     vector<pair<int, int> > vec;     vector<pair<int, int> > event;     multiset<int> s;     for (int i = 0; i < m; i++) {       int l, r, t;       gn(l, r);       gn(t);       event.push_back(pair<int, int>(l, t));       event.push_back(pair<int, int>(r, -t - 1));     }     sort(event.begin(), event.end());     for (pair<int, int> e : event) {       if (!s.empty()) vec.push_back(pair<int, int>(*s.begin() - e.first, 1));       if (e.second < 0)         s.erase(s.find(-e.second - 1));       else         s.insert(e.second);       if (!s.empty()) vec.push_back(pair<int, int>(*s.begin() - e.first, -1));     }     sort(vec.begin(), vec.end());     long long now = 0, d = 0;     int cur = 0;     int pre = -1e9;     for (int i = 0; i < n; i++) {       int t;       gn(t);       while (cur < vec.size() && vec[cur].first < t) {         now += d * (vec[cur].first - pre);         d += vec[cur].second;         pre = vec[cur].first;         cur++;       }       printf( %I64d n , now + d * (t - pre));     }     return 0;   }   