#include <bits/stdc++.h>
using namespace std;
#define db(...) " [" << #__VA_ARGS__ << " : " << (__VA_ARGS__) << "] "
const int N = 200005;
const int LOG = 17;
#define MASK(x) (1LL << (x))
template<class T>
struct fenwick_tree {
T s[N];
void update(int i, T x) {
for (; i <= 200000; i += i & -i) {
s[i] += x;
}
}
T get(int i) {
T res = 0;
for (; i > 0; i -= i & -i) {
res += s[i];
}
return res;
}
T get(int l, int r) {
return get(r) - get(l - 1);
}
int lower_bound(T k) {
int x = 0;
for (int i = MASK(LOG); i; i >>= 1) {
if (x + i <= 200000 && k >= s[x + i]) {
x += i;
k -= s[x];
}
}
return x;
}
};
struct T {
int v, c;
T() {};
T(int v, int c): v(v), c(c) {};
bool operator < (const T &oth) const {
return c < oth.c;
}
void read() {
cin >> v >> c;
}
} a[N];
int n, m;
int k;
vector<int> values;
int val(int idx) {
return values[k - idx];
}
int L = 1, R = 0;
fenwick_tree<long long> ft;
fenwick_tree<int> num;
long long get() {
int cnt = m - 2;
int pos = num.lower_bound(cnt - 1) + 1;
long long res = ft.get(pos - 1);
cnt -= num.get(pos - 1);
res += 1LL * val(pos) * cnt;
return res;
}
long long res = -1e18;
void add(int i) {
if (i) {
num.update(a[i].v, 1);
ft.update(a[i].v, val(a[i].v));
}
}
void del(int i) {
if (i) {
num.update(a[i].v, -1);
ft.update(a[i].v, -val(a[i].v));
}
}
void dnc(int l, int r, int optl, int optr) {
if (l > r) {
return;
}
int mid = l + r >> 1;
while (L > mid + 1) add(--L);
while (R < optr) add(++R);
while (L < mid + 1) del(L++);
while (R > optr) del(R--);
pair<long long, int> best = {-1e18, -1};
for (int i = optr; i >= max(mid + m - 1, optl); --i) {
while (R > i - 1) del(R--);
long long cost = -2LL * (a[i].c - a[mid].c);
cost += val(a[i].v);
cost += val(a[mid].v);
cost += get();
if (cost > best.first) {
best.first = cost;
best.second = i;
}
}
assert(best.second != -1);
res = max(res, best.first);
dnc(l, mid - 1, optl, best.second);
dnc(mid + 1, r, best.second, optr);
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(0);
cin >> n >> m;
for (int i = 1; i <= n; ++i) {
a[i].read();
values.emplace_back(a[i].v);
}
sort(values.begin(), values.end());
values.erase(unique(values.begin(), values.end()), values.end());
k = values.size();
for (int i = 1; i <= n; ++i) {
a[i].v = lower_bound(values.begin(), values.end(), a[i].v) - values.begin() + 1;
a[i].v = k - a[i].v + 1;
}
sort(a + 1, a + n + 1);
dnc(1, n - m + 1, m, n);
cout << res;
}
Compilation message
cake3.cpp: In function 'void dnc(int, int, int, int)':
cake3.cpp:105:15: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
105 | int mid = l + r >> 1;
| ~~^~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
2392 KB |
Output is correct |
2 |
Correct |
1 ms |
2396 KB |
Output is correct |
3 |
Correct |
1 ms |
2396 KB |
Output is correct |
4 |
Correct |
1 ms |
2396 KB |
Output is correct |
5 |
Correct |
1 ms |
2396 KB |
Output is correct |
6 |
Correct |
1 ms |
2396 KB |
Output is correct |
7 |
Correct |
1 ms |
2392 KB |
Output is correct |
8 |
Correct |
1 ms |
2396 KB |
Output is correct |
9 |
Correct |
1 ms |
2396 KB |
Output is correct |
10 |
Correct |
1 ms |
2396 KB |
Output is correct |
11 |
Correct |
1 ms |
2396 KB |
Output is correct |
12 |
Correct |
1 ms |
2396 KB |
Output is correct |
13 |
Correct |
1 ms |
2516 KB |
Output is correct |
14 |
Correct |
1 ms |
2396 KB |
Output is correct |
15 |
Correct |
1 ms |
2396 KB |
Output is correct |
16 |
Correct |
1 ms |
2396 KB |
Output is correct |
17 |
Correct |
1 ms |
2396 KB |
Output is correct |
18 |
Correct |
1 ms |
2392 KB |
Output is correct |
19 |
Correct |
1 ms |
2396 KB |
Output is correct |
20 |
Correct |
1 ms |
2396 KB |
Output is correct |
21 |
Correct |
1 ms |
2516 KB |
Output is correct |
22 |
Correct |
1 ms |
2552 KB |
Output is correct |
23 |
Correct |
1 ms |
2396 KB |
Output is correct |
24 |
Correct |
1 ms |
2396 KB |
Output is correct |
25 |
Correct |
1 ms |
2396 KB |
Output is correct |
26 |
Correct |
1 ms |
2396 KB |
Output is correct |
27 |
Correct |
1 ms |
2396 KB |
Output is correct |
28 |
Correct |
1 ms |
2396 KB |
Output is correct |
29 |
Correct |
1 ms |
2396 KB |
Output is correct |
30 |
Correct |
1 ms |
2396 KB |
Output is correct |
31 |
Correct |
1 ms |
2396 KB |
Output is correct |
32 |
Correct |
1 ms |
2396 KB |
Output is correct |
33 |
Correct |
1 ms |
2396 KB |
Output is correct |
34 |
Correct |
1 ms |
2396 KB |
Output is correct |
35 |
Correct |
1 ms |
2396 KB |
Output is correct |
36 |
Correct |
1 ms |
2396 KB |
Output is correct |
37 |
Correct |
1 ms |
2648 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
2392 KB |
Output is correct |
2 |
Correct |
1 ms |
2396 KB |
Output is correct |
3 |
Correct |
1 ms |
2396 KB |
Output is correct |
4 |
Correct |
1 ms |
2396 KB |
Output is correct |
5 |
Correct |
1 ms |
2396 KB |
Output is correct |
6 |
Correct |
1 ms |
2396 KB |
Output is correct |
7 |
Correct |
1 ms |
2392 KB |
Output is correct |
8 |
Correct |
1 ms |
2396 KB |
Output is correct |
9 |
Correct |
1 ms |
2396 KB |
Output is correct |
10 |
Correct |
1 ms |
2396 KB |
Output is correct |
11 |
Correct |
1 ms |
2396 KB |
Output is correct |
12 |
Correct |
1 ms |
2396 KB |
Output is correct |
13 |
Correct |
1 ms |
2516 KB |
Output is correct |
14 |
Correct |
1 ms |
2396 KB |
Output is correct |
15 |
Correct |
1 ms |
2396 KB |
Output is correct |
16 |
Correct |
1 ms |
2396 KB |
Output is correct |
17 |
Correct |
1 ms |
2396 KB |
Output is correct |
18 |
Correct |
1 ms |
2392 KB |
Output is correct |
19 |
Correct |
1 ms |
2396 KB |
Output is correct |
20 |
Correct |
1 ms |
2396 KB |
Output is correct |
21 |
Correct |
1 ms |
2516 KB |
Output is correct |
22 |
Correct |
1 ms |
2552 KB |
Output is correct |
23 |
Correct |
1 ms |
2396 KB |
Output is correct |
24 |
Correct |
1 ms |
2396 KB |
Output is correct |
25 |
Correct |
1 ms |
2396 KB |
Output is correct |
26 |
Correct |
1 ms |
2396 KB |
Output is correct |
27 |
Correct |
1 ms |
2396 KB |
Output is correct |
28 |
Correct |
1 ms |
2396 KB |
Output is correct |
29 |
Correct |
1 ms |
2396 KB |
Output is correct |
30 |
Correct |
1 ms |
2396 KB |
Output is correct |
31 |
Correct |
1 ms |
2396 KB |
Output is correct |
32 |
Correct |
1 ms |
2396 KB |
Output is correct |
33 |
Correct |
1 ms |
2396 KB |
Output is correct |
34 |
Correct |
1 ms |
2396 KB |
Output is correct |
35 |
Correct |
1 ms |
2396 KB |
Output is correct |
36 |
Correct |
1 ms |
2396 KB |
Output is correct |
37 |
Correct |
1 ms |
2648 KB |
Output is correct |
38 |
Correct |
3 ms |
2396 KB |
Output is correct |
39 |
Correct |
3 ms |
2396 KB |
Output is correct |
40 |
Correct |
2 ms |
2396 KB |
Output is correct |
41 |
Correct |
2 ms |
2564 KB |
Output is correct |
42 |
Correct |
2 ms |
2396 KB |
Output is correct |
43 |
Correct |
2 ms |
2396 KB |
Output is correct |
44 |
Correct |
3 ms |
2532 KB |
Output is correct |
45 |
Correct |
3 ms |
2612 KB |
Output is correct |
46 |
Correct |
3 ms |
2396 KB |
Output is correct |
47 |
Correct |
3 ms |
2396 KB |
Output is correct |
48 |
Correct |
3 ms |
2396 KB |
Output is correct |
49 |
Correct |
3 ms |
2396 KB |
Output is correct |
50 |
Correct |
3 ms |
2396 KB |
Output is correct |
51 |
Correct |
2 ms |
2396 KB |
Output is correct |
52 |
Correct |
2 ms |
2396 KB |
Output is correct |
53 |
Correct |
3 ms |
2396 KB |
Output is correct |
54 |
Correct |
2 ms |
2532 KB |
Output is correct |
55 |
Correct |
2 ms |
2396 KB |
Output is correct |
56 |
Correct |
2 ms |
2396 KB |
Output is correct |
57 |
Correct |
2 ms |
2392 KB |
Output is correct |
58 |
Correct |
2 ms |
2396 KB |
Output is correct |
59 |
Correct |
3 ms |
2396 KB |
Output is correct |
60 |
Correct |
3 ms |
2392 KB |
Output is correct |
61 |
Correct |
3 ms |
2392 KB |
Output is correct |
62 |
Correct |
2 ms |
2396 KB |
Output is correct |
63 |
Correct |
2 ms |
2396 KB |
Output is correct |
64 |
Correct |
2 ms |
2396 KB |
Output is correct |
65 |
Correct |
3 ms |
2396 KB |
Output is correct |
66 |
Correct |
3 ms |
2612 KB |
Output is correct |
67 |
Correct |
3 ms |
2396 KB |
Output is correct |
68 |
Correct |
3 ms |
2648 KB |
Output is correct |
69 |
Correct |
3 ms |
2396 KB |
Output is correct |
70 |
Correct |
3 ms |
2396 KB |
Output is correct |
71 |
Correct |
2 ms |
2396 KB |
Output is correct |
72 |
Correct |
2 ms |
2524 KB |
Output is correct |
73 |
Correct |
3 ms |
2396 KB |
Output is correct |
74 |
Correct |
1 ms |
2568 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
2392 KB |
Output is correct |
2 |
Correct |
1 ms |
2396 KB |
Output is correct |
3 |
Correct |
1 ms |
2396 KB |
Output is correct |
4 |
Correct |
1 ms |
2396 KB |
Output is correct |
5 |
Correct |
1 ms |
2396 KB |
Output is correct |
6 |
Correct |
1 ms |
2396 KB |
Output is correct |
7 |
Correct |
1 ms |
2392 KB |
Output is correct |
8 |
Correct |
1 ms |
2396 KB |
Output is correct |
9 |
Correct |
1 ms |
2396 KB |
Output is correct |
10 |
Correct |
1 ms |
2396 KB |
Output is correct |
11 |
Correct |
1 ms |
2396 KB |
Output is correct |
12 |
Correct |
1 ms |
2396 KB |
Output is correct |
13 |
Correct |
1 ms |
2516 KB |
Output is correct |
14 |
Correct |
1 ms |
2396 KB |
Output is correct |
15 |
Correct |
1 ms |
2396 KB |
Output is correct |
16 |
Correct |
1 ms |
2396 KB |
Output is correct |
17 |
Correct |
1 ms |
2396 KB |
Output is correct |
18 |
Correct |
1 ms |
2392 KB |
Output is correct |
19 |
Correct |
1 ms |
2396 KB |
Output is correct |
20 |
Correct |
1 ms |
2396 KB |
Output is correct |
21 |
Correct |
1 ms |
2516 KB |
Output is correct |
22 |
Correct |
1 ms |
2552 KB |
Output is correct |
23 |
Correct |
1 ms |
2396 KB |
Output is correct |
24 |
Correct |
1 ms |
2396 KB |
Output is correct |
25 |
Correct |
1 ms |
2396 KB |
Output is correct |
26 |
Correct |
1 ms |
2396 KB |
Output is correct |
27 |
Correct |
1 ms |
2396 KB |
Output is correct |
28 |
Correct |
1 ms |
2396 KB |
Output is correct |
29 |
Correct |
1 ms |
2396 KB |
Output is correct |
30 |
Correct |
1 ms |
2396 KB |
Output is correct |
31 |
Correct |
1 ms |
2396 KB |
Output is correct |
32 |
Correct |
1 ms |
2396 KB |
Output is correct |
33 |
Correct |
1 ms |
2396 KB |
Output is correct |
34 |
Correct |
1 ms |
2396 KB |
Output is correct |
35 |
Correct |
1 ms |
2396 KB |
Output is correct |
36 |
Correct |
1 ms |
2396 KB |
Output is correct |
37 |
Correct |
1 ms |
2648 KB |
Output is correct |
38 |
Correct |
3 ms |
2396 KB |
Output is correct |
39 |
Correct |
3 ms |
2396 KB |
Output is correct |
40 |
Correct |
2 ms |
2396 KB |
Output is correct |
41 |
Correct |
2 ms |
2564 KB |
Output is correct |
42 |
Correct |
2 ms |
2396 KB |
Output is correct |
43 |
Correct |
2 ms |
2396 KB |
Output is correct |
44 |
Correct |
3 ms |
2532 KB |
Output is correct |
45 |
Correct |
3 ms |
2612 KB |
Output is correct |
46 |
Correct |
3 ms |
2396 KB |
Output is correct |
47 |
Correct |
3 ms |
2396 KB |
Output is correct |
48 |
Correct |
3 ms |
2396 KB |
Output is correct |
49 |
Correct |
3 ms |
2396 KB |
Output is correct |
50 |
Correct |
3 ms |
2396 KB |
Output is correct |
51 |
Correct |
2 ms |
2396 KB |
Output is correct |
52 |
Correct |
2 ms |
2396 KB |
Output is correct |
53 |
Correct |
3 ms |
2396 KB |
Output is correct |
54 |
Correct |
2 ms |
2532 KB |
Output is correct |
55 |
Correct |
2 ms |
2396 KB |
Output is correct |
56 |
Correct |
2 ms |
2396 KB |
Output is correct |
57 |
Correct |
2 ms |
2392 KB |
Output is correct |
58 |
Correct |
2 ms |
2396 KB |
Output is correct |
59 |
Correct |
3 ms |
2396 KB |
Output is correct |
60 |
Correct |
3 ms |
2392 KB |
Output is correct |
61 |
Correct |
3 ms |
2392 KB |
Output is correct |
62 |
Correct |
2 ms |
2396 KB |
Output is correct |
63 |
Correct |
2 ms |
2396 KB |
Output is correct |
64 |
Correct |
2 ms |
2396 KB |
Output is correct |
65 |
Correct |
3 ms |
2396 KB |
Output is correct |
66 |
Correct |
3 ms |
2612 KB |
Output is correct |
67 |
Correct |
3 ms |
2396 KB |
Output is correct |
68 |
Correct |
3 ms |
2648 KB |
Output is correct |
69 |
Correct |
3 ms |
2396 KB |
Output is correct |
70 |
Correct |
3 ms |
2396 KB |
Output is correct |
71 |
Correct |
2 ms |
2396 KB |
Output is correct |
72 |
Correct |
2 ms |
2524 KB |
Output is correct |
73 |
Correct |
3 ms |
2396 KB |
Output is correct |
74 |
Correct |
1 ms |
2568 KB |
Output is correct |
75 |
Correct |
389 ms |
8432 KB |
Output is correct |
76 |
Correct |
449 ms |
8396 KB |
Output is correct |
77 |
Correct |
332 ms |
8396 KB |
Output is correct |
78 |
Correct |
369 ms |
8648 KB |
Output is correct |
79 |
Correct |
82 ms |
8652 KB |
Output is correct |
80 |
Correct |
116 ms |
8480 KB |
Output is correct |
81 |
Correct |
337 ms |
7632 KB |
Output is correct |
82 |
Correct |
430 ms |
7888 KB |
Output is correct |
83 |
Correct |
385 ms |
7952 KB |
Output is correct |
84 |
Correct |
398 ms |
7884 KB |
Output is correct |
85 |
Correct |
346 ms |
7976 KB |
Output is correct |
86 |
Correct |
186 ms |
7628 KB |
Output is correct |
87 |
Correct |
208 ms |
7376 KB |
Output is correct |
88 |
Correct |
300 ms |
7376 KB |
Output is correct |
89 |
Correct |
285 ms |
7724 KB |
Output is correct |
90 |
Correct |
204 ms |
7936 KB |
Output is correct |
91 |
Correct |
141 ms |
7372 KB |
Output is correct |
92 |
Correct |
158 ms |
7488 KB |
Output is correct |
93 |
Correct |
170 ms |
7700 KB |
Output is correct |
94 |
Correct |
125 ms |
7824 KB |
Output is correct |
95 |
Correct |
192 ms |
7936 KB |
Output is correct |
96 |
Correct |
302 ms |
7524 KB |
Output is correct |
97 |
Correct |
313 ms |
7900 KB |
Output is correct |
98 |
Correct |
325 ms |
7620 KB |
Output is correct |
99 |
Correct |
290 ms |
7844 KB |
Output is correct |
100 |
Correct |
228 ms |
7376 KB |
Output is correct |
101 |
Correct |
255 ms |
7548 KB |
Output is correct |
102 |
Correct |
333 ms |
7576 KB |
Output is correct |
103 |
Correct |
317 ms |
7480 KB |
Output is correct |
104 |
Correct |
366 ms |
7748 KB |
Output is correct |
105 |
Correct |
272 ms |
7728 KB |
Output is correct |
106 |
Correct |
271 ms |
7856 KB |
Output is correct |
107 |
Correct |
240 ms |
7616 KB |
Output is correct |
108 |
Correct |
341 ms |
8400 KB |
Output is correct |
109 |
Correct |
277 ms |
8792 KB |
Output is correct |
110 |
Correct |
175 ms |
7000 KB |
Output is correct |
111 |
Correct |
246 ms |
6872 KB |
Output is correct |
112 |
Correct |
368 ms |
6860 KB |
Output is correct |
113 |
Correct |
87 ms |
8988 KB |
Output is correct |