fork download
  1. /**
  2. Template by Akikaze (秋風) - formerly proptit_4t41.
  3. Code written by a random fan of momocashew and Chiho.
  4. **/
  5.  
  6. #include <bits/stdc++.h>
  7. using namespace std;
  8.  
  9. /** -----BASIC MACROES----- **/
  10. #define endl '\n'
  11. #define i64 long long
  12. #define ld long double
  13. #define pub push_back
  14. #define mp make_pair
  15. #define fi first
  16. #define se second
  17. const long long MOD = 1000000007LL, INF = 1e9, LINF = 1e18;
  18. const long double PI = 3.141592653589793116, EPS = 1e-9, GOLD = ((1+sqrt(5))/2);
  19. typedef vector<i64> vi;
  20. typedef vector<ld> vd;
  21. typedef vector<string> vs;
  22. typedef vector<bool> vb;
  23. typedef pair<i64, i64> pii;
  24. typedef pair<i64, pii> pip;
  25. typedef pair<pii, i64> ppi;
  26.  
  27. /** -----BIT CONTROLS----- **/
  28. template<class T> int getbit(T s, int i) { return (s >> 1) & 1; }
  29. template<class T> T onbit(T s, int i) { return s | (T(1) << i); }
  30. template<class T> T offbit(T s, int i) { return s & (~(T(1) << i)); }
  31. template<class T> int cntbit(T s) { return __builtin_popcount(s); }
  32.  
  33. /** -----IDEAS/ALGORITHMS-----
  34.  
  35.   -------------------------- **/
  36.  
  37. /** -----CUSTOM TYPEDEFS/DEFINES----- **/
  38.  
  39. /** -----GLOBAL VARIABLES----- **/
  40. i64 n, m, q;
  41. vi A(55555), tree(666666);
  42.  
  43. /** -----EXTENSIVE FUNCTIONS----- **/
  44. void build(i64 node, i64 st, i64 en) {
  45. if (st > en) return;
  46. if (st == en) {
  47. tree[node] = A[st];
  48. return;
  49. }
  50. build(node*2, st, (st+en)/2);
  51. build(node*2+1, (st+en)/2+1, en);
  52. tree[node] = max(tree[node*2], tree[node*2+1]);
  53. }
  54.  
  55. i64 get(i64 node, i64 st, i64 en, i64 L, i64 R) {
  56. if (st > en || st > R || en < L) return -LINF;
  57. if (L <= st && en <= R) return tree[node];
  58. i64 p1 = get(node*2, st, (st+en)/2, L, R);
  59. i64 p2 = get(node*2+1, (st+en)/2+1, en, L, R);
  60. return max(p1, p2);
  61. }
  62.  
  63. /** -----COMPULSORY FUNCTIONS----- **/
  64. void VarInput() {
  65. cin >> n >> m;
  66. while (m--) {
  67. i64 u, v, k; cin >> u >> v >> k;
  68. A[u] += k; A[v+1] -= k;
  69. }
  70. for (i64 i=2; i<=n; i++) A[i] += A[i-1];
  71. build(1, 1, n);
  72. }
  73.  
  74. void ProSolve() {
  75. cin >> q;
  76. while (q--) {
  77. i64 u, v; cin >> u >> v;
  78. cout << get(1, 1, n, u, v) << endl;
  79. }
  80. }
  81.  
  82. /** -----MAIN FUNCTION----- **/
  83. int main() {
  84. //freopen("FILE.INP", "r", stdin);
  85. //freopen("FILE.OUT", "w", stdout);
  86. ios_base::sync_with_stdio(0); cin.tie(NULL);
  87. VarInput(); ProSolve(); return 0;
  88. }
Success #stdin #stdout 0s 8584KB
stdin
6 2
1 3 2
4 6 3
1
3 4
stdout
3