#include <bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,popcnt,lzcnt")
#define fio ios_base::sync_with_stdio(0);cin.tie(0);
#define ll long long
#define en cin.close();return 0;
#define pb push_back
#define fi first//printf("%lli\n",cur);
#define se second//scanf("%lli",&n);
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
const int N = 2e5+15;
const ll INF = 1e18;
struct node
{
ll mi = INF, mx = -INF, cnt = 0, lzy = 0;
};
node segt[4*N];
int mx;
void updlzy(int pos, int siz)
{
int lzy = segt[pos].lzy;
if(lzy)
{
segt[pos].mi+=lzy;
segt[pos].mx+=lzy;
if(siz>1)
segt[pos*2].lzy+=lzy,
segt[pos*2+1].lzy+=lzy;
segt[pos].lzy=0;
}
}
void updnode(int pos)
{
segt[pos].cnt=segt[pos*2].cnt+segt[pos*2+1].cnt;
segt[pos].mi=min(segt[pos*2].mi,segt[pos*2+1].mi);
segt[pos].mx=max(segt[pos*2].mx,segt[pos*2+1].mx);
}
void upd(int lb, int rb, ll val, int l = 0, int r = mx, int pos = 1)
{
updlzy(pos,r-l+1);
if(rb<l||r<lb)
return;
if(lb<=l&&r<=rb)
segt[pos].lzy+=val,
updlzy(pos,r-l+1);
else
{
int mid = (l+r)/2;
upd(lb,rb,val,l,mid,pos*2);
upd(lb,rb,val,mid+1,r,pos*2+1);
updnode(pos);
}
}
void setupd(int p, ll val, int sz, int l = 0, int r = mx, int pos = 1)
{
updlzy(pos,r-l+1);
if(l==r)
segt[pos].mi=segt[pos].mx=val,
segt[pos].cnt=sz;
else
{
int mid = (l+r)/2;
if(p<=mid)
setupd(p,val,sz,l,mid,pos*2),
updlzy(pos*2+1,r-mid);
else
setupd(p,val,sz,mid+1,r,pos*2+1),
updlzy(pos*2,mid-l+1);
updnode(pos);
}
}
node get1(int lb, int rb, int l = 0, int r = mx, int pos = 1)
{
updlzy(pos,r-l+1);
if(rb<l||r<lb)
return {INF,-INF,0};
if(lb<=l&&r<=rb)
return segt[pos];
int mid = (l+r)/2;
auto t1 = get1(lb,rb,l,mid,pos*2), t2 = get1(lb,rb,mid+1,r,pos*2+1);
return {min(t1.mi,t2.mi),max(t1.mx,t2.mx),t1.cnt+t2.cnt};
}
int main()
{
fio
// ifstream cin("in.in");
int n, m, d;
cin >> n >> m >> d;
mx=n+m-1;
vector<pair<int,int> > a(n+m);
for(int i = 0;i<n+m;i++)
cin >> a[i].fi,
a[i].se=i;
sort(a.begin(),a.end());
vector<int> ord(n+m);
for(int i = 0;i<n+m;i++)
ord[a[i].se]=i;
ll res = 0;
for(int i = 0;i<n+m;i++)
{
int val = a[ord[i]].fi, pos = ord[i];
ll cur = d*get1(0,pos).cnt-val;
setupd(pos,cur,1);
upd(pos+1,n+m-1,d);
res=max(res,get1(pos,n+m-1).mx-get1(0,pos-1).mi);
res=max(res,get1(pos+1,n+m-1).mx-get1(0,pos).mi);
if(i>=n)
{
cout << res/2;
if(res%2)
cout << ".5";
cout << " ";
}
}
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
484 KB |
Output is correct |
2 |
Correct |
3 ms |
480 KB |
Output is correct |
3 |
Correct |
2 ms |
500 KB |
Output is correct |
4 |
Correct |
3 ms |
468 KB |
Output is correct |
5 |
Correct |
2 ms |
468 KB |
Output is correct |
6 |
Correct |
3 ms |
468 KB |
Output is correct |
7 |
Correct |
4 ms |
468 KB |
Output is correct |
8 |
Correct |
2 ms |
464 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
484 KB |
Output is correct |
2 |
Correct |
3 ms |
480 KB |
Output is correct |
3 |
Correct |
2 ms |
500 KB |
Output is correct |
4 |
Correct |
3 ms |
468 KB |
Output is correct |
5 |
Correct |
2 ms |
468 KB |
Output is correct |
6 |
Correct |
3 ms |
468 KB |
Output is correct |
7 |
Correct |
4 ms |
468 KB |
Output is correct |
8 |
Correct |
2 ms |
464 KB |
Output is correct |
9 |
Correct |
397 ms |
21028 KB |
Output is correct |
10 |
Incorrect |
390 ms |
21028 KB |
Output isn't correct |
11 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
286 ms |
20108 KB |
Output is correct |
2 |
Correct |
298 ms |
22032 KB |
Output is correct |
3 |
Correct |
305 ms |
21968 KB |
Output is correct |
4 |
Correct |
338 ms |
19844 KB |
Output is correct |
5 |
Correct |
288 ms |
21044 KB |
Output is correct |
6 |
Correct |
432 ms |
20172 KB |
Output is correct |
7 |
Correct |
305 ms |
21220 KB |
Output is correct |
8 |
Correct |
281 ms |
19952 KB |
Output is correct |
9 |
Correct |
288 ms |
19816 KB |
Output is correct |
10 |
Correct |
312 ms |
22184 KB |
Output is correct |
11 |
Correct |
297 ms |
20596 KB |
Output is correct |
12 |
Correct |
299 ms |
21620 KB |
Output is correct |
13 |
Correct |
342 ms |
19880 KB |
Output is correct |
14 |
Correct |
285 ms |
21776 KB |
Output is correct |
15 |
Correct |
309 ms |
21572 KB |
Output is correct |
16 |
Correct |
287 ms |
19780 KB |
Output is correct |
17 |
Correct |
303 ms |
21076 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
286 ms |
20108 KB |
Output is correct |
2 |
Correct |
298 ms |
22032 KB |
Output is correct |
3 |
Correct |
305 ms |
21968 KB |
Output is correct |
4 |
Correct |
338 ms |
19844 KB |
Output is correct |
5 |
Correct |
288 ms |
21044 KB |
Output is correct |
6 |
Correct |
432 ms |
20172 KB |
Output is correct |
7 |
Correct |
305 ms |
21220 KB |
Output is correct |
8 |
Correct |
281 ms |
19952 KB |
Output is correct |
9 |
Correct |
288 ms |
19816 KB |
Output is correct |
10 |
Correct |
312 ms |
22184 KB |
Output is correct |
11 |
Correct |
297 ms |
20596 KB |
Output is correct |
12 |
Correct |
299 ms |
21620 KB |
Output is correct |
13 |
Correct |
342 ms |
19880 KB |
Output is correct |
14 |
Correct |
285 ms |
21776 KB |
Output is correct |
15 |
Correct |
309 ms |
21572 KB |
Output is correct |
16 |
Correct |
287 ms |
19780 KB |
Output is correct |
17 |
Correct |
303 ms |
21076 KB |
Output is correct |
18 |
Correct |
439 ms |
20244 KB |
Output is correct |
19 |
Incorrect |
468 ms |
24012 KB |
Output isn't correct |
20 |
Halted |
0 ms |
0 KB |
- |