fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define int long long
  4. #ifndef yoshi_likes_e4
  5. #define endl '\n'
  6. #endif
  7. #define problem ""
  8. #define multitest 0
  9. #define debug(x) cerr << #x << " = " << x << endl;
  10. void init()
  11. {
  12. }
  13. int fdiv(int a, int32_t b)
  14. { // floored division
  15. return a / b - ((a ^ b) < 0 && a % b);
  16. }
  17. struct line
  18. {
  19. int32_t m;
  20. long long c;
  21. long long eval(long long x)
  22. {
  23. return m * x + c;
  24. }
  25. long long intersectX(line l)
  26. {
  27. return fdiv(c - l.c, l.m - m);
  28. }
  29. bool operator<(const line &x) const
  30. {
  31. if (m == x.m)
  32. return c > x.c;
  33. return m > x.m;
  34. }
  35. };
  36. struct Static_CHT
  37. {
  38. vector<line> lines;
  39. vector<int> isects;
  40. Static_CHT()
  41. {
  42. }
  43. Static_CHT(vector<line> p)
  44. {
  45. sort(p.begin(), p.end());
  46. for (int i = 0; i < p.size(); i++)
  47. {
  48. line cur = p[i];
  49. while (lines.size() >= 2 &&
  50. cur.intersectX(lines.back()) >= lines.back().intersectX(lines[lines.size() - 2]))
  51. lines.pop_back();
  52. lines.push_back(cur);
  53. }
  54. reverse(lines.begin(), lines.end());
  55. isects.resize(max(0ll, (int)lines.size() - 1));
  56. for (int i = 0; i < isects.size(); i++)
  57. isects[i] = this->lines[i].intersectX(this->lines[i + 1]);
  58. }
  59. int idx = 0;
  60. int Query(int x)
  61. {
  62. if (!lines.size())
  63. return -3e18;
  64. while (idx < isects.size() && isects[idx] < x)
  65. idx++;
  66. return lines[idx].eval(x);
  67. }
  68. };
  69. const int NM = 100000;
  70. const int B = 320;
  71. Static_CHT MIN[NM / B + 1];
  72. Static_CHT MAX[NM / B + 1];
  73. Static_CHT GSS[NM / B + 1];
  74. Static_CHT LSS[NM / B + 1];
  75. int LSS_CACHE[NM / B + 1];
  76. int GSS_CACHE[NM / B + 1];
  77. int MAX_CACHE[NM / B + 1];
  78. int MIN_CACHE[NM / B + 1];
  79. bool use_CHT[NM / B + 1];
  80. struct Data
  81. {
  82. int gs, ls, mn, mx;
  83. };
  84. Data CACHE[NM / B + 1];
  85. int n;
  86. int lz_b[NM / B + 1], lz_c[NM / B + 1];
  87. vector<int> pfs, op;
  88. void restore(const int blk)
  89. {
  90. use_CHT[blk] = 1;
  91. for (int i = blk * B; i < min((blk + 1) * B, n + 1); i++)
  92. pfs[i] = op[i];
  93. }
  94. int LS(const int blk)
  95. {
  96. if (use_CHT[blk])
  97. return (lz_b[blk] == 0 ? LSS_CACHE[blk] : -LSS[blk].Query(lz_b[blk]));
  98. else
  99. return CACHE[blk].ls;
  100. }
  101. int GS(const int blk)
  102. {
  103. if (use_CHT[blk])
  104. return (lz_b[blk] == 0 ? GSS_CACHE[blk] : GSS[blk].Query(lz_b[blk]));
  105. else
  106. return CACHE[blk].gs;
  107. }
  108. int MN(const int blk)
  109. {
  110. if (use_CHT[blk])
  111. return lz_c[blk] + (lz_b[blk] == 0 ? MIN_CACHE[blk] : -MIN[blk].Query(lz_b[blk]));
  112. else
  113. return CACHE[blk].mn;
  114. }
  115. int MX(const int blk)
  116. {
  117. if (use_CHT[blk])
  118. return lz_c[blk] + (lz_b[blk] == 0 ? MAX_CACHE[blk] : MAX[blk].Query(lz_b[blk]));
  119. else
  120. return CACHE[blk].mx;
  121. }
  122. void recomp(int blk)
  123. {
  124. CACHE[blk].gs = CACHE[blk].mx = -1e18;
  125. CACHE[blk].ls = CACHE[blk].mn = 1e18;
  126. for (int i = blk * B; i < min((blk + 1) * B, n + 1); i++)
  127. {
  128. if (i != blk * B)
  129. {
  130. CACHE[blk].gs = max(CACHE[blk].gs, pfs[i] - CACHE[blk].mn);
  131. CACHE[blk].ls = min(CACHE[blk].ls, pfs[i] - CACHE[blk].mx);
  132. }
  133. CACHE[blk].mx = max(CACHE[blk].mx, pfs[i]);
  134. CACHE[blk].mn = min(CACHE[blk].mn, pfs[i]);
  135. }
  136. }
  137. void add_range(int l, int r, const int b, const int c)
  138. {
  139. if (l > r)
  140. return;
  141. if (l / B != r / B)
  142. {
  143. use_CHT[l / B] = 0;
  144. for (int i = l; i < (l / B + 1) * B; i++)
  145. pfs[i] += b * i + c;
  146. if (r != n)
  147. {
  148. use_CHT[r / B] = 0;
  149. for (int i = r / B * B; i <= r; i++)
  150. pfs[i] += b * i + c;
  151. for (int i = l / B + 1; i < r / B; i++)
  152. lz_b[i] += b, lz_c[i] += c;
  153. }
  154. else
  155. {
  156. for (int i = l / B + 1; i <= r / B; i++)
  157. lz_b[i] += b, lz_c[i] += c;
  158. }
  159. }
  160. else
  161. {
  162. use_CHT[l / B] = 0;
  163. for (int i = l; i <= r; i++)
  164. pfs[i] += b * i + c;
  165. }
  166. }
  167. struct Query
  168. {
  169. int u, v, c, id;
  170. };
  171. void Yoshi()
  172. {
  173. int q;
  174. cin >> n >> q;
  175. vector<int> p(n);
  176. for (auto &i : p)
  177. cin >> i;
  178. pfs.resize(n + 1);
  179. for (int i = 0; i < n; i++)
  180. pfs[i + 1] = pfs[i] + p[i];
  181. op = pfs;
  182. for (int i = 0; i <= n; i += B)
  183. {
  184. vector<line> mn, mx, gsx, lsx;
  185. vector<int> lss(B, 1e18), gss(B, -1e18);
  186. for (int j = i; j < min(n + 1, i + B); j++)
  187. {
  188. mn.push_back({(int32_t)-j, -pfs[j]});
  189. mx.push_back({(int32_t)j, pfs[j]});
  190. }
  191. for (int j = i; j < min(n + 1, i + B); j++)
  192. for (int k = j + 1; k < min(n + 1, i + B); k++)
  193. {
  194. lss[k - j] = min(lss[k - j], pfs[k] - pfs[j]);
  195. gss[k - j] = max(gss[k - j], pfs[k] - pfs[j]);
  196. }
  197. for (int i = 1; i < B; i++)
  198. {
  199. lsx.push_back({(int32_t)-i, -lss[i]});
  200. gsx.push_back({(int32_t)i, gss[i]});
  201. }
  202. MIN[i / B] = mn;
  203. MAX[i / B] = mx;
  204. LSS[i / B] = lsx;
  205. GSS[i / B] = gsx;
  206. MIN_CACHE[i / B] = -MIN[i / B].Query(0);
  207. MAX_CACHE[i / B] = MAX[i / B].Query(0);
  208. LSS_CACHE[i / B] = -LSS[i / B].Query(0);
  209. GSS_CACHE[i / B] = GSS[i / B].Query(0);
  210. GSS[i / B].idx = 0;
  211. LSS[i / B].idx = 0;
  212. MIN[i / B].idx = 0;
  213. MAX[i / B].idx = 0;
  214. }
  215. fill(use_CHT, use_CHT + NM / B + 1, 1);
  216. vector<int> qres(q);
  217. vector<Query> queries;
  218. for (int id = 0; id < q; id++)
  219. {
  220. int u, v, c;
  221. cin >> u >> v >> c;
  222. queries.push_back({u, v, c, id});
  223. }
  224. sort(queries.begin(), queries.end(), [](Query &a, Query &b) { return a.c < b.c; });
  225. for (auto &[u, v, c, id] : queries)
  226. {
  227. add_range(u, v, c, -c * (u - 1));
  228. add_range(v + 1, n, 0, c * (v - u + 1));
  229. int gs = -1e18, ls = 1e18;
  230. int mib = 1e18, mxib = -1e18;
  231. for (int i = 0; i <= NM / B; i++)
  232. if (!use_CHT[i])
  233. recomp(i);
  234. for (int i = 0; i <= NM / B; i++)
  235. {
  236. gs = max(gs, GS(i));
  237. ls = min(ls, LS(i));
  238. const int mx = MX(i), mn = MN(i);
  239. if (i)
  240. {
  241. gs = max(mx - mib, gs);
  242. ls = min(mn - mxib, ls);
  243. }
  244. mib = min(mib, mn);
  245. mxib = max(mxib, mx);
  246. }
  247. qres[id] = max(abs(gs), abs(ls));
  248. for (int i = 0; i <= NM / B; i++)
  249. if (!use_CHT[i])
  250. restore(i);
  251. for (int i = u / B; i <= n / B; i++)
  252. lz_b[i] = lz_c[i] = 0;
  253. }
  254. for (auto &i : qres)
  255. cout << i << endl;
  256. }
  257. signed main()
  258. {
  259. #ifndef yoshi_likes_e4
  260. ios::sync_with_stdio(0);
  261. cin.tie(0);
  262. if (fopen(problem ".inp", "r"))
  263. {
  264. freopen(problem ".inp", "r", stdin);
  265. freopen(problem ".out", "w", stdout);
  266. }
  267. #endif
  268. init();
  269. int t = 1;
  270. #if multitest
  271. cin >> t;
  272. #endif
  273. while (t--)
  274. Yoshi();
  275. }
  276.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
Main.java:1: error: illegal character: '#'
#include <bits/stdc++.h>
^
Main.java:1: error: class, interface, or enum expected
#include <bits/stdc++.h>
         ^
Main.java:3: error: illegal character: '#'
#define int long long
^
Main.java:3: error: class, interface, or enum expected
#define int long long
        ^
Main.java:4: error: illegal character: '#'
#ifndef yoshi_likes_e4
^
Main.java:5: error: illegal character: '#'
#define endl '\n'
^
Main.java:6: error: illegal character: '#'
#endif
^
Main.java:7: error: illegal character: '#'
#define problem ""
^
Main.java:8: error: illegal character: '#'
#define multitest 0
^
Main.java:9: error: illegal character: '#'
#define debug(x) cerr << #x << " = " << x << endl;
^
Main.java:9: error: illegal character: '#'
#define debug(x) cerr << #x << " = " << x << endl;
                         ^
Main.java:10: error: class, interface, or enum expected
void init()
^
Main.java:16: error: class, interface, or enum expected
}
^
Main.java:20: error: class, interface, or enum expected
    long long c;
    ^
Main.java:21: error: class, interface, or enum expected
    long long eval(long long x)
    ^
Main.java:24: error: class, interface, or enum expected
    }
    ^
Main.java:28: error: class, interface, or enum expected
    }
    ^
Main.java:33: error: class, interface, or enum expected
        return m > x.m;
        ^
Main.java:34: error: class, interface, or enum expected
    }
    ^
Main.java:36: error: class, interface, or enum expected
struct Static_CHT
^
Main.java:39: error: class, interface, or enum expected
    vector<int> isects;
    ^
Main.java:40: error: class, interface, or enum expected
    Static_CHT()
    ^
Main.java:46: error: class, interface, or enum expected
        for (int i = 0; i < p.size(); i++)
        ^
Main.java:46: error: class, interface, or enum expected
        for (int i = 0; i < p.size(); i++)
                        ^
Main.java:46: error: class, interface, or enum expected
        for (int i = 0; i < p.size(); i++)
                                      ^
Main.java:49: error: class, interface, or enum expected
            while (lines.size() >= 2 &&
            ^
Main.java:52: error: class, interface, or enum expected
            lines.push_back(cur);
            ^
Main.java:53: error: class, interface, or enum expected
        }
        ^
Main.java:55: error: class, interface, or enum expected
        isects.resize(max(0ll, (int)lines.size() - 1));
        ^
Main.java:56: error: class, interface, or enum expected
        for (int i = 0; i < isects.size(); i++)
        ^
Main.java:56: error: class, interface, or enum expected
        for (int i = 0; i < isects.size(); i++)
                        ^
Main.java:56: error: class, interface, or enum expected
        for (int i = 0; i < isects.size(); i++)
                                           ^
Main.java:58: error: class, interface, or enum expected
    }
    ^
Main.java:60: error: class, interface, or enum expected
    int Query(int x)
    ^
Main.java:64: error: class, interface, or enum expected
        while (idx < isects.size() && isects[idx] < x)
        ^
Main.java:66: error: class, interface, or enum expected
        return lines[idx].eval(x);
        ^
Main.java:67: error: class, interface, or enum expected
    }
    ^
Main.java:69: error: class, interface, or enum expected
const int NM = 100000;
^
Main.java:70: error: class, interface, or enum expected
const int B = 320;
^
Main.java:71: error: class, interface, or enum expected
Static_CHT MIN[NM / B + 1];
^
Main.java:72: error: class, interface, or enum expected
Static_CHT MAX[NM / B + 1];
^
Main.java:73: error: class, interface, or enum expected
Static_CHT GSS[NM / B + 1];
^
Main.java:74: error: class, interface, or enum expected
Static_CHT LSS[NM / B + 1];
^
Main.java:75: error: class, interface, or enum expected
int LSS_CACHE[NM / B + 1];
^
Main.java:76: error: class, interface, or enum expected
int GSS_CACHE[NM / B + 1];
^
Main.java:77: error: class, interface, or enum expected
int MAX_CACHE[NM / B + 1];
^
Main.java:78: error: class, interface, or enum expected
int MIN_CACHE[NM / B + 1];
^
Main.java:79: error: class, interface, or enum expected
bool use_CHT[NM / B + 1];
^
Main.java:80: error: class, interface, or enum expected
struct Data
^
Main.java:83: error: class, interface, or enum expected
};
^
Main.java:84: error: class, interface, or enum expected
Data CACHE[NM / B + 1];
^
Main.java:85: error: class, interface, or enum expected
int n;
^
Main.java:86: error: class, interface, or enum expected
int lz_b[NM / B + 1], lz_c[NM / B + 1];
^
Main.java:87: error: class, interface, or enum expected
vector<int> pfs, op;
^
Main.java:88: error: class, interface, or enum expected
void restore(const int blk)
^
Main.java:91: error: class, interface, or enum expected
    for (int i = blk * B; i < min((blk + 1) * B, n + 1); i++)
    ^
Main.java:91: error: class, interface, or enum expected
    for (int i = blk * B; i < min((blk + 1) * B, n + 1); i++)
                          ^
Main.java:91: error: class, interface, or enum expected
    for (int i = blk * B; i < min((blk + 1) * B, n + 1); i++)
                                                         ^
Main.java:93: error: class, interface, or enum expected
}
^
Main.java:98: error: class, interface, or enum expected
    else
    ^
Main.java:100: error: class, interface, or enum expected
}
^
Main.java:105: error: class, interface, or enum expected
    else
    ^
Main.java:107: error: class, interface, or enum expected
}
^
Main.java:112: error: class, interface, or enum expected
    else
    ^
Main.java:114: error: class, interface, or enum expected
}
^
Main.java:119: error: class, interface, or enum expected
    else
    ^
Main.java:121: error: class, interface, or enum expected
}
^
Main.java:125: error: class, interface, or enum expected
    CACHE[blk].ls = CACHE[blk].mn = 1e18;
    ^
Main.java:126: error: class, interface, or enum expected
    for (int i = blk * B; i < min((blk + 1) * B, n + 1); i++)
    ^
Main.java:126: error: class, interface, or enum expected
    for (int i = blk * B; i < min((blk + 1) * B, n + 1); i++)
                          ^
Main.java:126: error: class, interface, or enum expected
    for (int i = blk * B; i < min((blk + 1) * B, n + 1); i++)
                                                         ^
Main.java:131: error: class, interface, or enum expected
            CACHE[blk].ls = min(CACHE[blk].ls, pfs[i] - CACHE[blk].mx);
            ^
Main.java:132: error: class, interface, or enum expected
        }
        ^
Main.java:134: error: class, interface, or enum expected
        CACHE[blk].mn = min(CACHE[blk].mn, pfs[i]);
        ^
Main.java:135: error: class, interface, or enum expected
    }
    ^
Main.java:141: error: class, interface, or enum expected
    if (l / B != r / B)
    ^
Main.java:144: error: class, interface, or enum expected
        for (int i = l; i < (l / B + 1) * B; i++)
        ^
Main.java:144: error: class, interface, or enum expected
        for (int i = l; i < (l / B + 1) * B; i++)
                        ^
Main.java:144: error: class, interface, or enum expected
        for (int i = l; i < (l / B + 1) * B; i++)
                                             ^
Main.java:146: error: class, interface, or enum expected
        if (r != n)
        ^
Main.java:149: error: class, interface, or enum expected
            for (int i = r / B * B; i <= r; i++)
            ^
Main.java:149: error: class, interface, or enum expected
            for (int i = r / B * B; i <= r; i++)
                                    ^
Main.java:149: error: class, interface, or enum expected
            for (int i = r / B * B; i <= r; i++)
                                            ^
Main.java:151: error: class, interface, or enum expected
            for (int i = l / B + 1; i < r / B; i++)
            ^
Main.java:151: error: class, interface, or enum expected
            for (int i = l / B + 1; i < r / B; i++)
                                    ^
Main.java:151: error: class, interface, or enum expected
            for (int i = l / B + 1; i < r / B; i++)
                                               ^
Main.java:153: error: class, interface, or enum expected
        }
        ^
Main.java:156: error: class, interface, or enum expected
            for (int i = l / B + 1; i <= r / B; i++)
                                    ^
Main.java:156: error: class, interface, or enum expected
            for (int i = l / B + 1; i <= r / B; i++)
                                                ^
Main.java:158: error: class, interface, or enum expected
        }
        ^
Main.java:163: error: class, interface, or enum expected
        for (int i = l; i <= r; i++)
        ^
Main.java:163: error: class, interface, or enum expected
        for (int i = l; i <= r; i++)
                        ^
Main.java:163: error: class, interface, or enum expected
        for (int i = l; i <= r; i++)
                                ^
Main.java:165: error: class, interface, or enum expected
    }
    ^
Main.java:170: error: class, interface, or enum expected
};
^
Main.java:171: error: class, interface, or enum expected
void Yoshi()
^
Main.java:174: error: class, interface, or enum expected
    cin >> n >> q;
    ^
Main.java:175: error: class, interface, or enum expected
    vector<int> p(n);
    ^
Main.java:176: error: class, interface, or enum expected
    for (auto &i : p)
    ^
Main.java:178: error: class, interface, or enum expected
    pfs.resize(n + 1);
    ^
100 errors
stdout
Standard output is empty