#include "candies.h"
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct ST {
struct R {
ll mn, mx;
R() : mn(1ll<<60), mx(-(1ll<<60)) {}
R(int x) : mn(x), mx(x) {}
};
int n;
vector<R> st;
vector<ll> lazy;
ST(int sz) : n(sz), st(4*n,0), lazy(4*n,0) {}
R mer(R a, R b){
R c;
c.mn = min(a.mn,b.mn);
c.mx = max(a.mx,b.mx);
return c;
}
void push(int p){
st[p].mn+=lazy[p];
st[p].mx+=lazy[p];
if((p<<1|1) < 4*n){
lazy[p<<1]+=lazy[p];
lazy[p<<1|1]+=lazy[p];
}
lazy[p] = 0;
}
void update(int i, int j, ll v, int l, int r, int p){
push(p);
if(l >= i && r <= j){
lazy[p]+=v;
push(p);
return;
}
if(l > j || r < i)return;
int m = (l+r)>>1;
update(i,j,v,l,m,p<<1);
update(i,j,v,m+1,r,p<<1|1);
st[p] = mer(st[p<<1],st[p<<1|1]);
}
R que(int i, int j, int l, int r, int p){
push(p);
if(l >= i && r <= j)return st[p];
if(l > j || r < i)return R();
int m = (l+r)>>1;
return mer(que(i,j,l,m,p<<1), que(i,j,m+1,r,p<<1|1));
}
};
struct T {
ll x, i;
T(int _x, int _i) : x(_x), i(_i) {}
};
vector<int> distribute_candies(vector<int> c, vector<int> l, vector<int> r, vector<int> v) {
int n = c.size();
int q = l.size();
vector<vector<T>> am(n+1);
for(int i = 0; i < q; ++i){
am[l[i]].emplace_back(v[i],i+1);
am[r[i]+1].emplace_back(-v[i],i+1);
}
ST S(q+1);
vector<int> ans(n,0);
for(int i = 0; i < n; ++i){
for(auto x : am[i]){
S.update(x.i,q,x.x,0,q,1);
}
ll a = -(1ll<<60), b = (1ll<<60);
int l = 0, r = q;
while(l <= r){
int m = (l+r) >> 1;
auto x = S.que(m,q,0,q,1);
if(x.mx-x.mn >= c[i]){
a = max(a,x.mn);
b = min(b,x.mx);
l = m+1;
}
else {
r = m-1;
}
}
auto x = S.que(l,q,0,q,1);
if(l == 0){
a = x.mn, b = c[i]-x.mn;
}
if(x.mn == a)ans[i] = (int)(S.que(q,q,0,q,1).mn-a);
else ans[i] = (int)(c[i] - (b - S.que(q,q,0,q,1).mn));
}
return ans;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
212 KB |
Output is correct |
3 |
Correct |
2 ms |
596 KB |
Output is correct |
4 |
Correct |
2 ms |
596 KB |
Output is correct |
5 |
Correct |
6 ms |
724 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1649 ms |
41292 KB |
Output is correct |
2 |
Correct |
1516 ms |
41304 KB |
Output is correct |
3 |
Correct |
1484 ms |
41300 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
2 |
Correct |
256 ms |
35700 KB |
Output is correct |
3 |
Correct |
390 ms |
9768 KB |
Output is correct |
4 |
Correct |
1455 ms |
47224 KB |
Output is correct |
5 |
Correct |
1386 ms |
47692 KB |
Output is correct |
6 |
Correct |
1479 ms |
48008 KB |
Output is correct |
7 |
Correct |
1536 ms |
47344 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
212 KB |
Output is correct |
3 |
Correct |
153 ms |
30352 KB |
Output is correct |
4 |
Correct |
371 ms |
8752 KB |
Output is correct |
5 |
Correct |
1247 ms |
40636 KB |
Output is correct |
6 |
Correct |
1259 ms |
41308 KB |
Output is correct |
7 |
Correct |
1278 ms |
41916 KB |
Output is correct |
8 |
Correct |
1196 ms |
40532 KB |
Output is correct |
9 |
Correct |
1274 ms |
42012 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
212 KB |
Output is correct |
3 |
Correct |
2 ms |
596 KB |
Output is correct |
4 |
Correct |
2 ms |
596 KB |
Output is correct |
5 |
Correct |
6 ms |
724 KB |
Output is correct |
6 |
Correct |
1649 ms |
41292 KB |
Output is correct |
7 |
Correct |
1516 ms |
41304 KB |
Output is correct |
8 |
Correct |
1484 ms |
41300 KB |
Output is correct |
9 |
Correct |
1 ms |
212 KB |
Output is correct |
10 |
Correct |
256 ms |
35700 KB |
Output is correct |
11 |
Correct |
390 ms |
9768 KB |
Output is correct |
12 |
Correct |
1455 ms |
47224 KB |
Output is correct |
13 |
Correct |
1386 ms |
47692 KB |
Output is correct |
14 |
Correct |
1479 ms |
48008 KB |
Output is correct |
15 |
Correct |
1536 ms |
47344 KB |
Output is correct |
16 |
Correct |
0 ms |
212 KB |
Output is correct |
17 |
Correct |
1 ms |
212 KB |
Output is correct |
18 |
Correct |
153 ms |
30352 KB |
Output is correct |
19 |
Correct |
371 ms |
8752 KB |
Output is correct |
20 |
Correct |
1247 ms |
40636 KB |
Output is correct |
21 |
Correct |
1259 ms |
41308 KB |
Output is correct |
22 |
Correct |
1278 ms |
41916 KB |
Output is correct |
23 |
Correct |
1196 ms |
40532 KB |
Output is correct |
24 |
Correct |
1274 ms |
42012 KB |
Output is correct |
25 |
Correct |
1 ms |
212 KB |
Output is correct |
26 |
Correct |
342 ms |
8908 KB |
Output is correct |
27 |
Correct |
283 ms |
35280 KB |
Output is correct |
28 |
Correct |
1416 ms |
45876 KB |
Output is correct |
29 |
Correct |
1473 ms |
46232 KB |
Output is correct |
30 |
Correct |
1507 ms |
46424 KB |
Output is correct |
31 |
Correct |
1533 ms |
46616 KB |
Output is correct |
32 |
Correct |
1538 ms |
46816 KB |
Output is correct |