#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rep(a, b) for(int a = 0; a < (b); ++a)
#define st first
#define nd second
#define pb push_back
#define all(a) a.begin(), a.end()
const ll INF=1e18+7;
const int LIM=2e5+7;
pair<ll,ll>T[LIM], dp[LIM];
multiset<ll>S;
vector<pair<ll,ll>>rollback;
ll akt, n, m;
void upd(int x) {
S.insert(T[x].nd);
akt+=T[x].nd;
if(S.size()>m-2) {
rollback.pb({T[x].nd, *S.begin()});
akt-=*S.begin();
S.erase(S.begin());
} else rollback.pb({T[x].nd, -1});
}
void undo() {
if(rollback.back().nd!=-1) {
akt+=rollback.back().nd;
S.insert(rollback.back().nd);
}
akt-=rollback.back().st;
S.erase(S.find(rollback.back().st));
rollback.pop_back();
}
void solve(int l, int r, int a, int b) {
if(l>r) return;
int mid=(l+r)/2;
for(int i=mid+1; i<=min(r, a-1); ++i) upd(i);
for(int i=max(mid+1, a); i<=b; ++i) {
if(S.size()==m-2) dp[mid]=max(dp[mid], {akt+T[i].nd+T[mid].nd-2*T[i].st+2*T[mid].st, i});
upd(i);
}
for(int i=b; i>=max(mid+1, a); --i) undo();
if(mid<a) upd(mid);
solve(l, mid-1, a, dp[mid].nd);
if(mid<a) undo();
for(int i=min(r, a-1); i>=mid+1; --i) undo();
for(int i=max(r+1, a); i<dp[mid].nd; ++i) upd(i);
solve(mid+1, r, dp[mid].nd, b);
for(int i=dp[mid].nd-1; i>=max(r+1, a); --i) undo();
}
int main() {
ios_base::sync_with_stdio(0); cin.tie(0);
cin >> n >> m;
rep(i, n) dp[i]={-INF, -1};
rep(i, n) cin >> T[i].nd >> T[i].st;
sort(T, T+n);
solve(0, n-m, 0, n-1);
ll ans=-INF;
rep(i, n-m+1) ans=max(ans, dp[i].st);
cout << ans << '\n';
}
Compilation message
cake3.cpp: In function 'void upd(int)':
cake3.cpp:18:13: warning: comparison of integer expressions of different signedness: 'std::multiset<long long int>::size_type' {aka 'long unsigned int'} and 'll' {aka 'long long int'} [-Wsign-compare]
18 | if(S.size()>m-2) {
| ~~~~~~~~^~~~
cake3.cpp: In function 'void solve(int, int, int, int)':
cake3.cpp:38:14: warning: comparison of integer expressions of different signedness: 'std::multiset<long long int>::size_type' {aka 'long unsigned int'} and 'll' {aka 'long long int'} [-Wsign-compare]
38 | if(S.size()==m-2) dp[mid]=max(dp[mid], {akt+T[i].nd+T[mid].nd-2*T[i].st+2*T[mid].st, i});
| ~~~~~~~~^~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
340 KB |
Output is correct |
2 |
Correct |
0 ms |
340 KB |
Output is correct |
3 |
Correct |
0 ms |
340 KB |
Output is correct |
4 |
Correct |
0 ms |
340 KB |
Output is correct |
5 |
Correct |
0 ms |
340 KB |
Output is correct |
6 |
Correct |
0 ms |
340 KB |
Output is correct |
7 |
Correct |
0 ms |
340 KB |
Output is correct |
8 |
Correct |
0 ms |
340 KB |
Output is correct |
9 |
Correct |
0 ms |
340 KB |
Output is correct |
10 |
Correct |
1 ms |
340 KB |
Output is correct |
11 |
Correct |
1 ms |
344 KB |
Output is correct |
12 |
Correct |
0 ms |
340 KB |
Output is correct |
13 |
Correct |
0 ms |
340 KB |
Output is correct |
14 |
Correct |
0 ms |
340 KB |
Output is correct |
15 |
Correct |
0 ms |
340 KB |
Output is correct |
16 |
Correct |
0 ms |
340 KB |
Output is correct |
17 |
Correct |
0 ms |
340 KB |
Output is correct |
18 |
Correct |
1 ms |
340 KB |
Output is correct |
19 |
Correct |
1 ms |
340 KB |
Output is correct |
20 |
Correct |
1 ms |
340 KB |
Output is correct |
21 |
Correct |
0 ms |
340 KB |
Output is correct |
22 |
Correct |
1 ms |
340 KB |
Output is correct |
23 |
Correct |
1 ms |
340 KB |
Output is correct |
24 |
Correct |
1 ms |
340 KB |
Output is correct |
25 |
Correct |
0 ms |
340 KB |
Output is correct |
26 |
Correct |
0 ms |
340 KB |
Output is correct |
27 |
Correct |
0 ms |
340 KB |
Output is correct |
28 |
Correct |
0 ms |
340 KB |
Output is correct |
29 |
Correct |
0 ms |
340 KB |
Output is correct |
30 |
Correct |
1 ms |
340 KB |
Output is correct |
31 |
Correct |
0 ms |
340 KB |
Output is correct |
32 |
Correct |
1 ms |
340 KB |
Output is correct |
33 |
Correct |
1 ms |
340 KB |
Output is correct |
34 |
Correct |
1 ms |
340 KB |
Output is correct |
35 |
Correct |
1 ms |
340 KB |
Output is correct |
36 |
Correct |
0 ms |
340 KB |
Output is correct |
37 |
Correct |
0 ms |
340 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
340 KB |
Output is correct |
2 |
Correct |
0 ms |
340 KB |
Output is correct |
3 |
Correct |
0 ms |
340 KB |
Output is correct |
4 |
Correct |
0 ms |
340 KB |
Output is correct |
5 |
Correct |
0 ms |
340 KB |
Output is correct |
6 |
Correct |
0 ms |
340 KB |
Output is correct |
7 |
Correct |
0 ms |
340 KB |
Output is correct |
8 |
Correct |
0 ms |
340 KB |
Output is correct |
9 |
Correct |
0 ms |
340 KB |
Output is correct |
10 |
Correct |
1 ms |
340 KB |
Output is correct |
11 |
Correct |
1 ms |
344 KB |
Output is correct |
12 |
Correct |
0 ms |
340 KB |
Output is correct |
13 |
Correct |
0 ms |
340 KB |
Output is correct |
14 |
Correct |
0 ms |
340 KB |
Output is correct |
15 |
Correct |
0 ms |
340 KB |
Output is correct |
16 |
Correct |
0 ms |
340 KB |
Output is correct |
17 |
Correct |
0 ms |
340 KB |
Output is correct |
18 |
Correct |
1 ms |
340 KB |
Output is correct |
19 |
Correct |
1 ms |
340 KB |
Output is correct |
20 |
Correct |
1 ms |
340 KB |
Output is correct |
21 |
Correct |
0 ms |
340 KB |
Output is correct |
22 |
Correct |
1 ms |
340 KB |
Output is correct |
23 |
Correct |
1 ms |
340 KB |
Output is correct |
24 |
Correct |
1 ms |
340 KB |
Output is correct |
25 |
Correct |
0 ms |
340 KB |
Output is correct |
26 |
Correct |
0 ms |
340 KB |
Output is correct |
27 |
Correct |
0 ms |
340 KB |
Output is correct |
28 |
Correct |
0 ms |
340 KB |
Output is correct |
29 |
Correct |
0 ms |
340 KB |
Output is correct |
30 |
Correct |
1 ms |
340 KB |
Output is correct |
31 |
Correct |
0 ms |
340 KB |
Output is correct |
32 |
Correct |
1 ms |
340 KB |
Output is correct |
33 |
Correct |
1 ms |
340 KB |
Output is correct |
34 |
Correct |
1 ms |
340 KB |
Output is correct |
35 |
Correct |
1 ms |
340 KB |
Output is correct |
36 |
Correct |
0 ms |
340 KB |
Output is correct |
37 |
Correct |
0 ms |
340 KB |
Output is correct |
38 |
Correct |
7 ms |
476 KB |
Output is correct |
39 |
Correct |
8 ms |
468 KB |
Output is correct |
40 |
Correct |
7 ms |
468 KB |
Output is correct |
41 |
Correct |
7 ms |
468 KB |
Output is correct |
42 |
Correct |
7 ms |
468 KB |
Output is correct |
43 |
Correct |
7 ms |
492 KB |
Output is correct |
44 |
Correct |
6 ms |
464 KB |
Output is correct |
45 |
Correct |
7 ms |
468 KB |
Output is correct |
46 |
Correct |
7 ms |
468 KB |
Output is correct |
47 |
Correct |
7 ms |
468 KB |
Output is correct |
48 |
Correct |
6 ms |
468 KB |
Output is correct |
49 |
Correct |
7 ms |
468 KB |
Output is correct |
50 |
Correct |
7 ms |
480 KB |
Output is correct |
51 |
Correct |
8 ms |
488 KB |
Output is correct |
52 |
Correct |
6 ms |
468 KB |
Output is correct |
53 |
Correct |
6 ms |
468 KB |
Output is correct |
54 |
Correct |
6 ms |
468 KB |
Output is correct |
55 |
Correct |
6 ms |
468 KB |
Output is correct |
56 |
Correct |
5 ms |
496 KB |
Output is correct |
57 |
Correct |
6 ms |
468 KB |
Output is correct |
58 |
Correct |
6 ms |
492 KB |
Output is correct |
59 |
Correct |
5 ms |
468 KB |
Output is correct |
60 |
Correct |
5 ms |
472 KB |
Output is correct |
61 |
Correct |
5 ms |
468 KB |
Output is correct |
62 |
Correct |
4 ms |
468 KB |
Output is correct |
63 |
Correct |
6 ms |
508 KB |
Output is correct |
64 |
Correct |
5 ms |
468 KB |
Output is correct |
65 |
Correct |
8 ms |
472 KB |
Output is correct |
66 |
Correct |
7 ms |
468 KB |
Output is correct |
67 |
Correct |
8 ms |
468 KB |
Output is correct |
68 |
Correct |
7 ms |
468 KB |
Output is correct |
69 |
Correct |
6 ms |
484 KB |
Output is correct |
70 |
Correct |
8 ms |
468 KB |
Output is correct |
71 |
Correct |
6 ms |
468 KB |
Output is correct |
72 |
Correct |
6 ms |
468 KB |
Output is correct |
73 |
Correct |
5 ms |
480 KB |
Output is correct |
74 |
Correct |
1 ms |
468 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
340 KB |
Output is correct |
2 |
Correct |
0 ms |
340 KB |
Output is correct |
3 |
Correct |
0 ms |
340 KB |
Output is correct |
4 |
Correct |
0 ms |
340 KB |
Output is correct |
5 |
Correct |
0 ms |
340 KB |
Output is correct |
6 |
Correct |
0 ms |
340 KB |
Output is correct |
7 |
Correct |
0 ms |
340 KB |
Output is correct |
8 |
Correct |
0 ms |
340 KB |
Output is correct |
9 |
Correct |
0 ms |
340 KB |
Output is correct |
10 |
Correct |
1 ms |
340 KB |
Output is correct |
11 |
Correct |
1 ms |
344 KB |
Output is correct |
12 |
Correct |
0 ms |
340 KB |
Output is correct |
13 |
Correct |
0 ms |
340 KB |
Output is correct |
14 |
Correct |
0 ms |
340 KB |
Output is correct |
15 |
Correct |
0 ms |
340 KB |
Output is correct |
16 |
Correct |
0 ms |
340 KB |
Output is correct |
17 |
Correct |
0 ms |
340 KB |
Output is correct |
18 |
Correct |
1 ms |
340 KB |
Output is correct |
19 |
Correct |
1 ms |
340 KB |
Output is correct |
20 |
Correct |
1 ms |
340 KB |
Output is correct |
21 |
Correct |
0 ms |
340 KB |
Output is correct |
22 |
Correct |
1 ms |
340 KB |
Output is correct |
23 |
Correct |
1 ms |
340 KB |
Output is correct |
24 |
Correct |
1 ms |
340 KB |
Output is correct |
25 |
Correct |
0 ms |
340 KB |
Output is correct |
26 |
Correct |
0 ms |
340 KB |
Output is correct |
27 |
Correct |
0 ms |
340 KB |
Output is correct |
28 |
Correct |
0 ms |
340 KB |
Output is correct |
29 |
Correct |
0 ms |
340 KB |
Output is correct |
30 |
Correct |
1 ms |
340 KB |
Output is correct |
31 |
Correct |
0 ms |
340 KB |
Output is correct |
32 |
Correct |
1 ms |
340 KB |
Output is correct |
33 |
Correct |
1 ms |
340 KB |
Output is correct |
34 |
Correct |
1 ms |
340 KB |
Output is correct |
35 |
Correct |
1 ms |
340 KB |
Output is correct |
36 |
Correct |
0 ms |
340 KB |
Output is correct |
37 |
Correct |
0 ms |
340 KB |
Output is correct |
38 |
Correct |
7 ms |
476 KB |
Output is correct |
39 |
Correct |
8 ms |
468 KB |
Output is correct |
40 |
Correct |
7 ms |
468 KB |
Output is correct |
41 |
Correct |
7 ms |
468 KB |
Output is correct |
42 |
Correct |
7 ms |
468 KB |
Output is correct |
43 |
Correct |
7 ms |
492 KB |
Output is correct |
44 |
Correct |
6 ms |
464 KB |
Output is correct |
45 |
Correct |
7 ms |
468 KB |
Output is correct |
46 |
Correct |
7 ms |
468 KB |
Output is correct |
47 |
Correct |
7 ms |
468 KB |
Output is correct |
48 |
Correct |
6 ms |
468 KB |
Output is correct |
49 |
Correct |
7 ms |
468 KB |
Output is correct |
50 |
Correct |
7 ms |
480 KB |
Output is correct |
51 |
Correct |
8 ms |
488 KB |
Output is correct |
52 |
Correct |
6 ms |
468 KB |
Output is correct |
53 |
Correct |
6 ms |
468 KB |
Output is correct |
54 |
Correct |
6 ms |
468 KB |
Output is correct |
55 |
Correct |
6 ms |
468 KB |
Output is correct |
56 |
Correct |
5 ms |
496 KB |
Output is correct |
57 |
Correct |
6 ms |
468 KB |
Output is correct |
58 |
Correct |
6 ms |
492 KB |
Output is correct |
59 |
Correct |
5 ms |
468 KB |
Output is correct |
60 |
Correct |
5 ms |
472 KB |
Output is correct |
61 |
Correct |
5 ms |
468 KB |
Output is correct |
62 |
Correct |
4 ms |
468 KB |
Output is correct |
63 |
Correct |
6 ms |
508 KB |
Output is correct |
64 |
Correct |
5 ms |
468 KB |
Output is correct |
65 |
Correct |
8 ms |
472 KB |
Output is correct |
66 |
Correct |
7 ms |
468 KB |
Output is correct |
67 |
Correct |
8 ms |
468 KB |
Output is correct |
68 |
Correct |
7 ms |
468 KB |
Output is correct |
69 |
Correct |
6 ms |
484 KB |
Output is correct |
70 |
Correct |
8 ms |
468 KB |
Output is correct |
71 |
Correct |
6 ms |
468 KB |
Output is correct |
72 |
Correct |
6 ms |
468 KB |
Output is correct |
73 |
Correct |
5 ms |
480 KB |
Output is correct |
74 |
Correct |
1 ms |
468 KB |
Output is correct |
75 |
Correct |
2260 ms |
13176 KB |
Output is correct |
76 |
Correct |
1942 ms |
15416 KB |
Output is correct |
77 |
Correct |
2455 ms |
17852 KB |
Output is correct |
78 |
Correct |
2463 ms |
17708 KB |
Output is correct |
79 |
Correct |
1235 ms |
21860 KB |
Output is correct |
80 |
Correct |
1994 ms |
20644 KB |
Output is correct |
81 |
Correct |
2622 ms |
14532 KB |
Output is correct |
82 |
Correct |
2314 ms |
13184 KB |
Output is correct |
83 |
Correct |
2774 ms |
14428 KB |
Output is correct |
84 |
Correct |
2591 ms |
14192 KB |
Output is correct |
85 |
Correct |
2647 ms |
14464 KB |
Output is correct |
86 |
Correct |
2621 ms |
17828 KB |
Output is correct |
87 |
Correct |
2562 ms |
17468 KB |
Output is correct |
88 |
Correct |
2447 ms |
14140 KB |
Output is correct |
89 |
Correct |
2695 ms |
17500 KB |
Output is correct |
90 |
Correct |
2924 ms |
19056 KB |
Output is correct |
91 |
Correct |
2508 ms |
19012 KB |
Output is correct |
92 |
Correct |
2600 ms |
18856 KB |
Output is correct |
93 |
Correct |
2713 ms |
18972 KB |
Output is correct |
94 |
Correct |
2971 ms |
19676 KB |
Output is correct |
95 |
Correct |
2940 ms |
19272 KB |
Output is correct |
96 |
Correct |
1107 ms |
14124 KB |
Output is correct |
97 |
Correct |
1156 ms |
16956 KB |
Output is correct |
98 |
Correct |
1214 ms |
14404 KB |
Output is correct |
99 |
Correct |
1143 ms |
17292 KB |
Output is correct |
100 |
Correct |
1044 ms |
17340 KB |
Output is correct |
101 |
Correct |
1129 ms |
17084 KB |
Output is correct |
102 |
Correct |
1853 ms |
13080 KB |
Output is correct |
103 |
Correct |
1741 ms |
13428 KB |
Output is correct |
104 |
Correct |
1663 ms |
13040 KB |
Output is correct |
105 |
Correct |
2119 ms |
17216 KB |
Output is correct |
106 |
Correct |
2036 ms |
17724 KB |
Output is correct |
107 |
Correct |
1931 ms |
17752 KB |
Output is correct |
108 |
Correct |
2436 ms |
17992 KB |
Output is correct |
109 |
Correct |
2731 ms |
20292 KB |
Output is correct |
110 |
Correct |
1804 ms |
16956 KB |
Output is correct |
111 |
Correct |
1816 ms |
12864 KB |
Output is correct |
112 |
Correct |
1427 ms |
15132 KB |
Output is correct |
113 |
Correct |
209 ms |
22952 KB |
Output is correct |