#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 |
2 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 |
2 ms |
376 KB |
Output is correct |
8 |
Correct |
0 ms |
376 KB |
Output is correct |
9 |
Correct |
2 ms |
376 KB |
Output is correct |
10 |
Correct |
4 ms |
420 KB |
Output is correct |
11 |
Correct |
1 ms |
348 KB |
Output is correct |
12 |
Correct |
2 ms |
376 KB |
Output is correct |
13 |
Correct |
2 ms |
376 KB |
Output is correct |
14 |
Correct |
2 ms |
376 KB |
Output is correct |
15 |
Correct |
2 ms |
504 KB |
Output is correct |
16 |
Correct |
3 ms |
376 KB |
Output is correct |
17 |
Correct |
2 ms |
504 KB |
Output is correct |
18 |
Correct |
2 ms |
376 KB |
Output is correct |
19 |
Correct |
2 ms |
424 KB |
Output is correct |
20 |
Correct |
2 ms |
504 KB |
Output is correct |
21 |
Correct |
2 ms |
376 KB |
Output is correct |
22 |
Correct |
7 ms |
348 KB |
Output is correct |
23 |
Correct |
2 ms |
376 KB |
Output is correct |
24 |
Correct |
2 ms |
376 KB |
Output is correct |
25 |
Correct |
2 ms |
376 KB |
Output is correct |
26 |
Correct |
2 ms |
376 KB |
Output is correct |
27 |
Correct |
2 ms |
376 KB |
Output is correct |
28 |
Correct |
2 ms |
376 KB |
Output is correct |
29 |
Correct |
2 ms |
376 KB |
Output is correct |
30 |
Correct |
2 ms |
376 KB |
Output is correct |
31 |
Correct |
2 ms |
376 KB |
Output is correct |
32 |
Correct |
2 ms |
376 KB |
Output is correct |
33 |
Correct |
2 ms |
376 KB |
Output is correct |
34 |
Correct |
2 ms |
376 KB |
Output is correct |
35 |
Correct |
2 ms |
248 KB |
Output is correct |
36 |
Correct |
2 ms |
376 KB |
Output is correct |
37 |
Correct |
3 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 |
2 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 |
2 ms |
376 KB |
Output is correct |
8 |
Correct |
0 ms |
376 KB |
Output is correct |
9 |
Correct |
2 ms |
376 KB |
Output is correct |
10 |
Correct |
4 ms |
420 KB |
Output is correct |
11 |
Correct |
1 ms |
348 KB |
Output is correct |
12 |
Correct |
2 ms |
376 KB |
Output is correct |
13 |
Correct |
2 ms |
376 KB |
Output is correct |
14 |
Correct |
2 ms |
376 KB |
Output is correct |
15 |
Correct |
2 ms |
504 KB |
Output is correct |
16 |
Correct |
3 ms |
376 KB |
Output is correct |
17 |
Correct |
2 ms |
504 KB |
Output is correct |
18 |
Correct |
2 ms |
376 KB |
Output is correct |
19 |
Correct |
2 ms |
424 KB |
Output is correct |
20 |
Correct |
2 ms |
504 KB |
Output is correct |
21 |
Correct |
2 ms |
376 KB |
Output is correct |
22 |
Correct |
7 ms |
348 KB |
Output is correct |
23 |
Correct |
2 ms |
376 KB |
Output is correct |
24 |
Correct |
2 ms |
376 KB |
Output is correct |
25 |
Correct |
2 ms |
376 KB |
Output is correct |
26 |
Correct |
2 ms |
376 KB |
Output is correct |
27 |
Correct |
2 ms |
376 KB |
Output is correct |
28 |
Correct |
2 ms |
376 KB |
Output is correct |
29 |
Correct |
2 ms |
376 KB |
Output is correct |
30 |
Correct |
2 ms |
376 KB |
Output is correct |
31 |
Correct |
2 ms |
376 KB |
Output is correct |
32 |
Correct |
2 ms |
376 KB |
Output is correct |
33 |
Correct |
2 ms |
376 KB |
Output is correct |
34 |
Correct |
2 ms |
376 KB |
Output is correct |
35 |
Correct |
2 ms |
248 KB |
Output is correct |
36 |
Correct |
2 ms |
376 KB |
Output is correct |
37 |
Correct |
3 ms |
376 KB |
Output is correct |
38 |
Correct |
2 ms |
1144 KB |
Output is correct |
39 |
Correct |
4 ms |
1272 KB |
Output is correct |
40 |
Correct |
9 ms |
1272 KB |
Output is correct |
41 |
Correct |
5 ms |
1144 KB |
Output is correct |
42 |
Correct |
4 ms |
1144 KB |
Output is correct |
43 |
Correct |
5 ms |
1144 KB |
Output is correct |
44 |
Correct |
5 ms |
1144 KB |
Output is correct |
45 |
Correct |
5 ms |
1144 KB |
Output is correct |
46 |
Correct |
6 ms |
1220 KB |
Output is correct |
47 |
Correct |
6 ms |
1144 KB |
Output is correct |
48 |
Correct |
5 ms |
1144 KB |
Output is correct |
49 |
Correct |
6 ms |
1272 KB |
Output is correct |
50 |
Correct |
5 ms |
1144 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 |
4 ms |
1144 KB |
Output is correct |
57 |
Correct |
4 ms |
1168 KB |
Output is correct |
58 |
Correct |
4 ms |
1144 KB |
Output is correct |
59 |
Correct |
4 ms |
1272 KB |
Output is correct |
60 |
Correct |
4 ms |
1144 KB |
Output is correct |
61 |
Correct |
4 ms |
1144 KB |
Output is correct |
62 |
Correct |
2 ms |
1144 KB |
Output is correct |
63 |
Correct |
4 ms |
1276 KB |
Output is correct |
64 |
Correct |
4 ms |
1192 KB |
Output is correct |
65 |
Correct |
5 ms |
1144 KB |
Output is correct |
66 |
Correct |
5 ms |
1148 KB |
Output is correct |
67 |
Correct |
6 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 |
1144 KB |
Output is correct |
71 |
Correct |
4 ms |
1144 KB |
Output is correct |
72 |
Correct |
4 ms |
1144 KB |
Output is correct |
73 |
Correct |
5 ms |
1144 KB |
Output is correct |
74 |
Correct |
4 ms |
1148 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 |
2 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 |
2 ms |
376 KB |
Output is correct |
8 |
Correct |
0 ms |
376 KB |
Output is correct |
9 |
Correct |
2 ms |
376 KB |
Output is correct |
10 |
Correct |
4 ms |
420 KB |
Output is correct |
11 |
Correct |
1 ms |
348 KB |
Output is correct |
12 |
Correct |
2 ms |
376 KB |
Output is correct |
13 |
Correct |
2 ms |
376 KB |
Output is correct |
14 |
Correct |
2 ms |
376 KB |
Output is correct |
15 |
Correct |
2 ms |
504 KB |
Output is correct |
16 |
Correct |
3 ms |
376 KB |
Output is correct |
17 |
Correct |
2 ms |
504 KB |
Output is correct |
18 |
Correct |
2 ms |
376 KB |
Output is correct |
19 |
Correct |
2 ms |
424 KB |
Output is correct |
20 |
Correct |
2 ms |
504 KB |
Output is correct |
21 |
Correct |
2 ms |
376 KB |
Output is correct |
22 |
Correct |
7 ms |
348 KB |
Output is correct |
23 |
Correct |
2 ms |
376 KB |
Output is correct |
24 |
Correct |
2 ms |
376 KB |
Output is correct |
25 |
Correct |
2 ms |
376 KB |
Output is correct |
26 |
Correct |
2 ms |
376 KB |
Output is correct |
27 |
Correct |
2 ms |
376 KB |
Output is correct |
28 |
Correct |
2 ms |
376 KB |
Output is correct |
29 |
Correct |
2 ms |
376 KB |
Output is correct |
30 |
Correct |
2 ms |
376 KB |
Output is correct |
31 |
Correct |
2 ms |
376 KB |
Output is correct |
32 |
Correct |
2 ms |
376 KB |
Output is correct |
33 |
Correct |
2 ms |
376 KB |
Output is correct |
34 |
Correct |
2 ms |
376 KB |
Output is correct |
35 |
Correct |
2 ms |
248 KB |
Output is correct |
36 |
Correct |
2 ms |
376 KB |
Output is correct |
37 |
Correct |
3 ms |
376 KB |
Output is correct |
38 |
Correct |
2 ms |
1144 KB |
Output is correct |
39 |
Correct |
4 ms |
1272 KB |
Output is correct |
40 |
Correct |
9 ms |
1272 KB |
Output is correct |
41 |
Correct |
5 ms |
1144 KB |
Output is correct |
42 |
Correct |
4 ms |
1144 KB |
Output is correct |
43 |
Correct |
5 ms |
1144 KB |
Output is correct |
44 |
Correct |
5 ms |
1144 KB |
Output is correct |
45 |
Correct |
5 ms |
1144 KB |
Output is correct |
46 |
Correct |
6 ms |
1220 KB |
Output is correct |
47 |
Correct |
6 ms |
1144 KB |
Output is correct |
48 |
Correct |
5 ms |
1144 KB |
Output is correct |
49 |
Correct |
6 ms |
1272 KB |
Output is correct |
50 |
Correct |
5 ms |
1144 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 |
4 ms |
1144 KB |
Output is correct |
57 |
Correct |
4 ms |
1168 KB |
Output is correct |
58 |
Correct |
4 ms |
1144 KB |
Output is correct |
59 |
Correct |
4 ms |
1272 KB |
Output is correct |
60 |
Correct |
4 ms |
1144 KB |
Output is correct |
61 |
Correct |
4 ms |
1144 KB |
Output is correct |
62 |
Correct |
2 ms |
1144 KB |
Output is correct |
63 |
Correct |
4 ms |
1276 KB |
Output is correct |
64 |
Correct |
4 ms |
1192 KB |
Output is correct |
65 |
Correct |
5 ms |
1144 KB |
Output is correct |
66 |
Correct |
5 ms |
1148 KB |
Output is correct |
67 |
Correct |
6 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 |
1144 KB |
Output is correct |
71 |
Correct |
4 ms |
1144 KB |
Output is correct |
72 |
Correct |
4 ms |
1144 KB |
Output is correct |
73 |
Correct |
5 ms |
1144 KB |
Output is correct |
74 |
Correct |
4 ms |
1148 KB |
Output is correct |
75 |
Correct |
915 ms |
116856 KB |
Output is correct |
76 |
Correct |
971 ms |
113564 KB |
Output is correct |
77 |
Correct |
832 ms |
117152 KB |
Output is correct |
78 |
Correct |
873 ms |
119032 KB |
Output is correct |
79 |
Correct |
342 ms |
119416 KB |
Output is correct |
80 |
Correct |
358 ms |
115764 KB |
Output is correct |
81 |
Correct |
657 ms |
117496 KB |
Output is correct |
82 |
Correct |
838 ms |
119332 KB |
Output is correct |
83 |
Correct |
753 ms |
123532 KB |
Output is correct |
84 |
Correct |
812 ms |
123128 KB |
Output is correct |
85 |
Correct |
683 ms |
118508 KB |
Output is correct |
86 |
Correct |
435 ms |
114372 KB |
Output is correct |
87 |
Correct |
462 ms |
112668 KB |
Output is correct |
88 |
Correct |
609 ms |
111928 KB |
Output is correct |
89 |
Correct |
623 ms |
118648 KB |
Output is correct |
90 |
Correct |
574 ms |
124288 KB |
Output is correct |
91 |
Correct |
376 ms |
114420 KB |
Output is correct |
92 |
Correct |
381 ms |
113400 KB |
Output is correct |
93 |
Correct |
421 ms |
118708 KB |
Output is correct |
94 |
Correct |
418 ms |
124316 KB |
Output is correct |
95 |
Correct |
516 ms |
124592 KB |
Output is correct |
96 |
Correct |
391 ms |
117584 KB |
Output is correct |
97 |
Correct |
379 ms |
126844 KB |
Output is correct |
98 |
Correct |
384 ms |
124792 KB |
Output is correct |
99 |
Correct |
356 ms |
125176 KB |
Output is correct |
100 |
Correct |
317 ms |
118008 KB |
Output is correct |
101 |
Correct |
322 ms |
118136 KB |
Output is correct |
102 |
Correct |
571 ms |
115704 KB |
Output is correct |
103 |
Correct |
735 ms |
114016 KB |
Output is correct |
104 |
Correct |
786 ms |
120688 KB |
Output is correct |
105 |
Correct |
507 ms |
120184 KB |
Output is correct |
106 |
Correct |
526 ms |
123516 KB |
Output is correct |
107 |
Correct |
444 ms |
118780 KB |
Output is correct |
108 |
Correct |
831 ms |
118180 KB |
Output is correct |
109 |
Correct |
703 ms |
125816 KB |
Output is correct |
110 |
Correct |
291 ms |
115360 KB |
Output is correct |
111 |
Correct |
392 ms |
117240 KB |
Output is correct |
112 |
Correct |
824 ms |
111668 KB |
Output is correct |
113 |
Correct |
362 ms |
125940 KB |
Output is correct |