Submission #482117

#TimeUsernameProblemLanguageResultExecution timeMemory
482117MilosMilutinovicWatering can (POI13_kon)C++14
100 / 100
301 ms32620 KiB
#include <bits/stdc++.h> #define ff(i,a,b) for(int (i) = (a); (i) <= (b); ++(i)) #define fb(i,a,b) for(int (i) = (a); (i) >= (b); --(i)) #define pb push_back #define gas INT_MAX using namespace std; int N,K; int niz[300005]; int mn[2500005]; int cnt[2500005]; int lzy[2500005]; int inf = 1e9+200; void upd(int node){ cnt[node] = cnt[node * 2] + cnt[node * 2 + 1]; mn[node] = min(mn[node * 2], mn[node * 2 + 1]); } void build(int node, int l, int r){ if(l == r){ if(niz[l] > 0)mn[node] = niz[l]; else{ cnt[node] = 1; mn[node] = inf; } return; } int mid = (l + r) / 2; build(node * 2, l, mid); build(node * 2 + 1, mid + 1, r); upd(node); } void propagate(int node){ if(mn[node] != inf)mn[node] -= lzy[node]; lzy[node * 2] += lzy[node]; lzy[node * 2 + 1] += lzy[node]; lzy[node] = 0; } void update(int node, int l, int r, int ll, int rr, int x){ propagate(node); if(l > r || l > rr || r < ll)return; if(ll <= l && r <= rr){ lzy[node] += x; propagate(node); return; } int mid = (l + r) / 2; update(node * 2, l, mid, ll, rr, x); update(node * 2 + 1, mid + 1, r, ll, rr, x); upd(node); } int get(int node, int l, int r, int ll, int rr){ //propagate(node); if(l > r || l > rr || r < ll)return 0; if(ll <= l && r <= rr)return cnt[node]; int mid = (l + r) / 2; return get(node * 2, l, mid, ll, rr) + get(node * 2 + 1, mid + 1, r, ll, rr); } void rebuild(int node, int l, int r){ propagate(node); if(mn[node] > 0)return; if(l == r){ mn[node] = inf; cnt[node] = 1; return; } int mid = (l + r) / 2; rebuild(node * 2, l, mid); rebuild(node * 2 + 1, mid + 1, r); upd(node); } void inicjuj(int n, int k, int *D) { N = n; K = k; ff(i,1,n)niz[i] = k-D[i-1]; build(1, 1, N); } void podlej(int a, int b) { a++; b++; update(1, 1, N, a, b, 1); rebuild(1, 1, N); } int dojrzale(int a, int b) { a++; b++; return get(1, 1, N, a, b); }

Compilation message (stderr)

kon.cpp: In function 'void inicjuj(int, int, int*)':
kon.cpp:2:27: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
    2 | #define ff(i,a,b) for(int (i) = (a); (i) <= (b); ++(i))
      |                           ^
kon.cpp:87:5: note: in expansion of macro 'ff'
   87 |     ff(i,1,n)niz[i] = k-D[i-1];
      |     ^~
#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...
#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...