Submission #521568

#TimeUTC-0UsernameProblemLanguageResultExecution timeMemory
5215682022-02-02 12:03:30eecsDistributing Candies (IOI21_candies)C++17
100 / 100
379 ms38424 KiB
#include "candies.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 200010;
int C;
ll mn[maxn << 2], mx[maxn << 2], tag[maxn << 2];
vector<pair<int, int>> Q[maxn];
#define mid (l + r >> 1)
#define ls (k << 1)
#define rs (k << 1 | 1)
void apply(int k, ll v) { mn[k] += v, mx[k] += v, tag[k] += v; }
void pushdown(int k) { apply(ls, tag[k]), apply(rs, tag[k]), tag[k] = 0; }
void add(int k, int l, int r, int ql, int qr, ll v) {
if (l >= ql && r <= qr) { apply(k, v); return; }
pushdown(k);
if (mid >= ql) add(ls, l, mid, ql, qr, v);
if (mid < qr) add(rs, mid + 1, r, ql, qr, v);
mn[k] = min(mn[ls], mn[rs]), mx[k] = max(mx[ls], mx[rs]);
}
int find(int k, int l, int r, ll &cmn, ll &cmx) {
if (l < r && max(cmx, mx[k]) - min(cmn, mn[k]) >= C) {
pushdown(k);
int t = find(rs, mid + 1, r, cmn, cmx);
return ~t ? t : find(ls, l, mid, cmn, cmx);
} else {
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Compilation message (stderr)

candies.cpp: In function 'void add(int, int, int, int, int, ll)':
candies.cpp:11:16: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   11 | #define mid (l + r >> 1)
      |              ~~^~~
candies.cpp:20:6: note: in expansion of macro 'mid'
   20 |  if (mid >= ql) add(ls, l, mid, ql, qr, v);
      |      ^~~
candies.cpp:11:16: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   11 | #define mid (l + r >> 1)
      |              ~~^~~
candies.cpp:20:28: note: in expansion of macro 'mid'
   20 |  if (mid >= ql) add(ls, l, mid, ql, qr, v);
      |                            ^~~
candies.cpp:11:16: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   11 | #define mid (l + r >> 1)
      |              ~~^~~
candies.cpp:21:6: note: in expansion of macro 'mid'
   21 |  if (mid < qr) add(rs, mid + 1, r, ql, qr, v);
      |      ^~~
candies.cpp:11:16: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   11 | #define mid (l + r >> 1)
      |              ~~^~~
candies.cpp:21:24: note: in expansion of macro 'mid'
   21 |  if (mid < qr) add(rs, mid + 1, r, ql, qr, v);
      |                        ^~~
candies.cpp: In function 'int find(int, int, int, ll&, ll&)':
candies.cpp:11:16: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   11 | #define mid (l + r >> 1)
      |              ~~^~~
candies.cpp:28:20: note: in expansion of macro 'mid'
   28 |   int t = find(rs, mid + 1, r, cmn, cmx);
      |                    ^~~
candies.cpp:11:16: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   11 | #define mid (l + r >> 1)
      |              ~~^~~
candies.cpp:29:31: note: in expansion of macro 'mid'
   29 |   return ~t ? t : find(ls, l, mid, cmn, cmx);
      |                               ^~~
candies.cpp: In function 'll query(int, int, int, int)':
candies.cpp:11:16: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   11 | #define mid (l + r >> 1)
      |              ~~^~~
candies.cpp:39:9: note: in expansion of macro 'mid'
   39 |  return mid >= p ? query(ls, l, mid, p) : query(rs, mid + 1, r, p);
      |         ^~~
candies.cpp:11:16: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   11 | #define mid (l + r >> 1)
      |              ~~^~~
candies.cpp:39:33: note: in expansion of macro 'mid'
   39 |  return mid >= p ? query(ls, l, mid, p) : query(rs, mid + 1, r, p);
      |                                 ^~~
candies.cpp:11:16: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   11 | #define mid (l + r >> 1)
      |              ~~^~~
candies.cpp:39:53: note: in expansion of macro 'mid'
   39 |  return mid >= p ? query(ls, l, mid, p) : query(rs, mid + 1, r, p);
      |                                                     ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...