#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int MAXN = 2e5 + 5;
ll N, M, ans = -1e18;
pii A[MAXN];
ll comp[MAXN], root[MAXN];
int get_idx(ll val) { return lower_bound(comp+1, comp+1+N, val) - comp; }
struct PST {
struct NODE { ll l, r, cnt, sum; } T[MAXN * 30];
int sz;
int make(int v, int l, int r, int n) {
if(r < v || v < l) return n;
int cur = ++sz;
T[cur] = T[n];
if(l != r) {
int mid = l + r >> 1;
T[cur].l = make(v, l, mid, T[n].l);
T[cur].r = make(v, mid+1, r, T[n].r);
}
T[cur].cnt++;
T[cur].sum += comp[v];
return cur;
}
ll query(int tot, int l, int r, int n1, int n2) {
if(l == r) return comp[l] * tot;
int rcnt = T[T[n2].r].cnt - T[T[n1].r].cnt;
ll sum = T[T[n2].r].sum - T[T[n1].r].sum;
int mid = l + r >> 1;
if(rcnt >= tot) return query(tot, mid+1, r, T[n1].r, T[n2].r);
else return sum + query(tot - rcnt, l, mid, T[n1].l, T[n2].l);
}
} pst;
void f(int s, int e, int l, int r) {
if(l > r) return;
int mid = l + r >> 1;
ll k = e, MAX = -1e18;
for(int i=max((ll)s, mid+M-1); i<=e; i++) {
ll q = pst.query(M, 1, N, root[mid-1], root[i]) - 2LL * (A[i].fi - A[mid].fi);
if(MAX <= q) {
MAX = q;
k = i;
}
}
ans = max(ans, MAX);
f(s, k, l, mid-1); f(k, e, mid+1, r);
}
int main() {
ios::sync_with_stdio(0); cin.tie(0);
cin >> N >> M;
for(int i=1; i<=N; i++) {
cin >> A[i].se >> A[i].fi;
comp[i] = A[i].se;
}
sort(comp+1, comp+1+N);
sort(A+1, A+1+N);
for(int i=1; i<=N; i++) root[i] = pst.make(get_idx(A[i].se), 1, N, root[i-1]);
f(1, N, 1, N);
cout << ans;
}
Compilation message
cake3.cpp: In member function 'int PST::make(int, int, int, int)':
cake3.cpp:27:16: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
int mid = l + r >> 1;
~~^~~
cake3.cpp: In member function 'll PST::query(int, int, int, int, int)':
cake3.cpp:39:15: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
int mid = l + r >> 1;
~~^~~
cake3.cpp: In function 'void f(int, int, int, int)':
cake3.cpp:47:14: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
int mid = l + r >> 1;
~~^~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
2 ms |
376 KB |
Output is correct |
3 |
Correct |
1 ms |
376 KB |
Output is correct |
4 |
Correct |
2 ms |
376 KB |
Output is correct |
5 |
Correct |
2 ms |
376 KB |
Output is correct |
6 |
Correct |
2 ms |
376 KB |
Output is correct |
7 |
Correct |
4 ms |
376 KB |
Output is correct |
8 |
Correct |
4 ms |
248 KB |
Output is correct |
9 |
Correct |
0 ms |
376 KB |
Output is correct |
10 |
Correct |
2 ms |
376 KB |
Output is correct |
11 |
Correct |
2 ms |
376 KB |
Output is correct |
12 |
Correct |
2 ms |
376 KB |
Output is correct |
13 |
Correct |
2 ms |
380 KB |
Output is correct |
14 |
Correct |
2 ms |
376 KB |
Output is correct |
15 |
Correct |
2 ms |
376 KB |
Output is correct |
16 |
Correct |
2 ms |
376 KB |
Output is correct |
17 |
Correct |
0 ms |
376 KB |
Output is correct |
18 |
Correct |
2 ms |
248 KB |
Output is correct |
19 |
Correct |
5 ms |
376 KB |
Output is correct |
20 |
Correct |
2 ms |
376 KB |
Output is correct |
21 |
Correct |
6 ms |
376 KB |
Output is correct |
22 |
Correct |
2 ms |
376 KB |
Output is correct |
23 |
Correct |
1 ms |
376 KB |
Output is correct |
24 |
Correct |
2 ms |
376 KB |
Output is correct |
25 |
Correct |
2 ms |
504 KB |
Output is correct |
26 |
Correct |
2 ms |
376 KB |
Output is correct |
27 |
Correct |
1 ms |
376 KB |
Output is correct |
28 |
Correct |
2 ms |
376 KB |
Output is correct |
29 |
Correct |
1 ms |
504 KB |
Output is correct |
30 |
Correct |
2 ms |
376 KB |
Output is correct |
31 |
Correct |
3 ms |
376 KB |
Output is correct |
32 |
Correct |
2 ms |
376 KB |
Output is correct |
33 |
Correct |
0 ms |
376 KB |
Output is correct |
34 |
Correct |
1 ms |
376 KB |
Output is correct |
35 |
Correct |
2 ms |
376 KB |
Output is correct |
36 |
Correct |
2 ms |
376 KB |
Output is correct |
37 |
Correct |
2 ms |
376 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
2 ms |
376 KB |
Output is correct |
3 |
Correct |
1 ms |
376 KB |
Output is correct |
4 |
Correct |
2 ms |
376 KB |
Output is correct |
5 |
Correct |
2 ms |
376 KB |
Output is correct |
6 |
Correct |
2 ms |
376 KB |
Output is correct |
7 |
Correct |
4 ms |
376 KB |
Output is correct |
8 |
Correct |
4 ms |
248 KB |
Output is correct |
9 |
Correct |
0 ms |
376 KB |
Output is correct |
10 |
Correct |
2 ms |
376 KB |
Output is correct |
11 |
Correct |
2 ms |
376 KB |
Output is correct |
12 |
Correct |
2 ms |
376 KB |
Output is correct |
13 |
Correct |
2 ms |
380 KB |
Output is correct |
14 |
Correct |
2 ms |
376 KB |
Output is correct |
15 |
Correct |
2 ms |
376 KB |
Output is correct |
16 |
Correct |
2 ms |
376 KB |
Output is correct |
17 |
Correct |
0 ms |
376 KB |
Output is correct |
18 |
Correct |
2 ms |
248 KB |
Output is correct |
19 |
Correct |
5 ms |
376 KB |
Output is correct |
20 |
Correct |
2 ms |
376 KB |
Output is correct |
21 |
Correct |
6 ms |
376 KB |
Output is correct |
22 |
Correct |
2 ms |
376 KB |
Output is correct |
23 |
Correct |
1 ms |
376 KB |
Output is correct |
24 |
Correct |
2 ms |
376 KB |
Output is correct |
25 |
Correct |
2 ms |
504 KB |
Output is correct |
26 |
Correct |
2 ms |
376 KB |
Output is correct |
27 |
Correct |
1 ms |
376 KB |
Output is correct |
28 |
Correct |
2 ms |
376 KB |
Output is correct |
29 |
Correct |
1 ms |
504 KB |
Output is correct |
30 |
Correct |
2 ms |
376 KB |
Output is correct |
31 |
Correct |
3 ms |
376 KB |
Output is correct |
32 |
Correct |
2 ms |
376 KB |
Output is correct |
33 |
Correct |
0 ms |
376 KB |
Output is correct |
34 |
Correct |
1 ms |
376 KB |
Output is correct |
35 |
Correct |
2 ms |
376 KB |
Output is correct |
36 |
Correct |
2 ms |
376 KB |
Output is correct |
37 |
Correct |
2 ms |
376 KB |
Output is correct |
38 |
Correct |
6 ms |
1116 KB |
Output is correct |
39 |
Correct |
5 ms |
1144 KB |
Output is correct |
40 |
Correct |
5 ms |
1084 KB |
Output is correct |
41 |
Correct |
5 ms |
1016 KB |
Output is correct |
42 |
Correct |
4 ms |
1144 KB |
Output is correct |
43 |
Correct |
11 ms |
1144 KB |
Output is correct |
44 |
Correct |
1 ms |
1144 KB |
Output is correct |
45 |
Correct |
5 ms |
1144 KB |
Output is correct |
46 |
Correct |
5 ms |
1144 KB |
Output is correct |
47 |
Correct |
10 ms |
1144 KB |
Output is correct |
48 |
Correct |
5 ms |
1016 KB |
Output is correct |
49 |
Correct |
5 ms |
1144 KB |
Output is correct |
50 |
Correct |
5 ms |
1148 KB |
Output is correct |
51 |
Correct |
5 ms |
1144 KB |
Output is correct |
52 |
Correct |
5 ms |
1144 KB |
Output is correct |
53 |
Correct |
5 ms |
1144 KB |
Output is correct |
54 |
Correct |
4 ms |
1144 KB |
Output is correct |
55 |
Correct |
5 ms |
1144 KB |
Output is correct |
56 |
Correct |
5 ms |
1144 KB |
Output is correct |
57 |
Correct |
5 ms |
1144 KB |
Output is correct |
58 |
Correct |
4 ms |
1144 KB |
Output is correct |
59 |
Correct |
4 ms |
1144 KB |
Output is correct |
60 |
Correct |
4 ms |
1144 KB |
Output is correct |
61 |
Correct |
4 ms |
1144 KB |
Output is correct |
62 |
Correct |
4 ms |
1144 KB |
Output is correct |
63 |
Correct |
4 ms |
1144 KB |
Output is correct |
64 |
Correct |
4 ms |
1144 KB |
Output is correct |
65 |
Correct |
5 ms |
1148 KB |
Output is correct |
66 |
Correct |
11 ms |
1144 KB |
Output is correct |
67 |
Correct |
5 ms |
1144 KB |
Output is correct |
68 |
Correct |
5 ms |
1272 KB |
Output is correct |
69 |
Correct |
5 ms |
1144 KB |
Output is correct |
70 |
Correct |
5 ms |
1148 KB |
Output is correct |
71 |
Correct |
4 ms |
1144 KB |
Output is correct |
72 |
Correct |
3 ms |
1144 KB |
Output is correct |
73 |
Correct |
5 ms |
1144 KB |
Output is correct |
74 |
Correct |
4 ms |
1144 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
2 ms |
376 KB |
Output is correct |
3 |
Correct |
1 ms |
376 KB |
Output is correct |
4 |
Correct |
2 ms |
376 KB |
Output is correct |
5 |
Correct |
2 ms |
376 KB |
Output is correct |
6 |
Correct |
2 ms |
376 KB |
Output is correct |
7 |
Correct |
4 ms |
376 KB |
Output is correct |
8 |
Correct |
4 ms |
248 KB |
Output is correct |
9 |
Correct |
0 ms |
376 KB |
Output is correct |
10 |
Correct |
2 ms |
376 KB |
Output is correct |
11 |
Correct |
2 ms |
376 KB |
Output is correct |
12 |
Correct |
2 ms |
376 KB |
Output is correct |
13 |
Correct |
2 ms |
380 KB |
Output is correct |
14 |
Correct |
2 ms |
376 KB |
Output is correct |
15 |
Correct |
2 ms |
376 KB |
Output is correct |
16 |
Correct |
2 ms |
376 KB |
Output is correct |
17 |
Correct |
0 ms |
376 KB |
Output is correct |
18 |
Correct |
2 ms |
248 KB |
Output is correct |
19 |
Correct |
5 ms |
376 KB |
Output is correct |
20 |
Correct |
2 ms |
376 KB |
Output is correct |
21 |
Correct |
6 ms |
376 KB |
Output is correct |
22 |
Correct |
2 ms |
376 KB |
Output is correct |
23 |
Correct |
1 ms |
376 KB |
Output is correct |
24 |
Correct |
2 ms |
376 KB |
Output is correct |
25 |
Correct |
2 ms |
504 KB |
Output is correct |
26 |
Correct |
2 ms |
376 KB |
Output is correct |
27 |
Correct |
1 ms |
376 KB |
Output is correct |
28 |
Correct |
2 ms |
376 KB |
Output is correct |
29 |
Correct |
1 ms |
504 KB |
Output is correct |
30 |
Correct |
2 ms |
376 KB |
Output is correct |
31 |
Correct |
3 ms |
376 KB |
Output is correct |
32 |
Correct |
2 ms |
376 KB |
Output is correct |
33 |
Correct |
0 ms |
376 KB |
Output is correct |
34 |
Correct |
1 ms |
376 KB |
Output is correct |
35 |
Correct |
2 ms |
376 KB |
Output is correct |
36 |
Correct |
2 ms |
376 KB |
Output is correct |
37 |
Correct |
2 ms |
376 KB |
Output is correct |
38 |
Correct |
6 ms |
1116 KB |
Output is correct |
39 |
Correct |
5 ms |
1144 KB |
Output is correct |
40 |
Correct |
5 ms |
1084 KB |
Output is correct |
41 |
Correct |
5 ms |
1016 KB |
Output is correct |
42 |
Correct |
4 ms |
1144 KB |
Output is correct |
43 |
Correct |
11 ms |
1144 KB |
Output is correct |
44 |
Correct |
1 ms |
1144 KB |
Output is correct |
45 |
Correct |
5 ms |
1144 KB |
Output is correct |
46 |
Correct |
5 ms |
1144 KB |
Output is correct |
47 |
Correct |
10 ms |
1144 KB |
Output is correct |
48 |
Correct |
5 ms |
1016 KB |
Output is correct |
49 |
Correct |
5 ms |
1144 KB |
Output is correct |
50 |
Correct |
5 ms |
1148 KB |
Output is correct |
51 |
Correct |
5 ms |
1144 KB |
Output is correct |
52 |
Correct |
5 ms |
1144 KB |
Output is correct |
53 |
Correct |
5 ms |
1144 KB |
Output is correct |
54 |
Correct |
4 ms |
1144 KB |
Output is correct |
55 |
Correct |
5 ms |
1144 KB |
Output is correct |
56 |
Correct |
5 ms |
1144 KB |
Output is correct |
57 |
Correct |
5 ms |
1144 KB |
Output is correct |
58 |
Correct |
4 ms |
1144 KB |
Output is correct |
59 |
Correct |
4 ms |
1144 KB |
Output is correct |
60 |
Correct |
4 ms |
1144 KB |
Output is correct |
61 |
Correct |
4 ms |
1144 KB |
Output is correct |
62 |
Correct |
4 ms |
1144 KB |
Output is correct |
63 |
Correct |
4 ms |
1144 KB |
Output is correct |
64 |
Correct |
4 ms |
1144 KB |
Output is correct |
65 |
Correct |
5 ms |
1148 KB |
Output is correct |
66 |
Correct |
11 ms |
1144 KB |
Output is correct |
67 |
Correct |
5 ms |
1144 KB |
Output is correct |
68 |
Correct |
5 ms |
1272 KB |
Output is correct |
69 |
Correct |
5 ms |
1144 KB |
Output is correct |
70 |
Correct |
5 ms |
1148 KB |
Output is correct |
71 |
Correct |
4 ms |
1144 KB |
Output is correct |
72 |
Correct |
3 ms |
1144 KB |
Output is correct |
73 |
Correct |
5 ms |
1144 KB |
Output is correct |
74 |
Correct |
4 ms |
1144 KB |
Output is correct |
75 |
Correct |
931 ms |
115932 KB |
Output is correct |
76 |
Correct |
985 ms |
112632 KB |
Output is correct |
77 |
Correct |
844 ms |
115448 KB |
Output is correct |
78 |
Correct |
886 ms |
116728 KB |
Output is correct |
79 |
Correct |
339 ms |
117112 KB |
Output is correct |
80 |
Correct |
390 ms |
113620 KB |
Output is correct |
81 |
Correct |
664 ms |
116088 KB |
Output is correct |
82 |
Correct |
849 ms |
117752 KB |
Output is correct |
83 |
Correct |
768 ms |
121968 KB |
Output is correct |
84 |
Correct |
831 ms |
121320 KB |
Output is correct |
85 |
Correct |
696 ms |
116936 KB |
Output is correct |
86 |
Correct |
438 ms |
112884 KB |
Output is correct |
87 |
Correct |
460 ms |
111352 KB |
Output is correct |
88 |
Correct |
623 ms |
110696 KB |
Output is correct |
89 |
Correct |
604 ms |
117336 KB |
Output is correct |
90 |
Correct |
464 ms |
122780 KB |
Output is correct |
91 |
Correct |
459 ms |
113144 KB |
Output is correct |
92 |
Correct |
388 ms |
112280 KB |
Output is correct |
93 |
Correct |
419 ms |
117200 KB |
Output is correct |
94 |
Correct |
390 ms |
122700 KB |
Output is correct |
95 |
Correct |
462 ms |
122872 KB |
Output is correct |
96 |
Correct |
355 ms |
116228 KB |
Output is correct |
97 |
Correct |
346 ms |
125264 KB |
Output is correct |
98 |
Correct |
373 ms |
123288 KB |
Output is correct |
99 |
Correct |
361 ms |
123680 KB |
Output is correct |
100 |
Correct |
313 ms |
116600 KB |
Output is correct |
101 |
Correct |
319 ms |
116740 KB |
Output is correct |
102 |
Correct |
654 ms |
114296 KB |
Output is correct |
103 |
Correct |
561 ms |
112576 KB |
Output is correct |
104 |
Correct |
669 ms |
119248 KB |
Output is correct |
105 |
Correct |
501 ms |
118648 KB |
Output is correct |
106 |
Correct |
529 ms |
121792 KB |
Output is correct |
107 |
Correct |
444 ms |
117240 KB |
Output is correct |
108 |
Correct |
841 ms |
116280 KB |
Output is correct |
109 |
Correct |
720 ms |
123360 KB |
Output is correct |
110 |
Correct |
290 ms |
114416 KB |
Output is correct |
111 |
Correct |
353 ms |
116296 KB |
Output is correct |
112 |
Correct |
773 ms |
110812 KB |
Output is correct |
113 |
Correct |
374 ms |
123424 KB |
Output is correct |