#include<bits/stdc++.h>
#pragma GCC optimize ("O3")
using namespace std;
const int N=2e5+1;
const int LOG=18;
const long long inf=1e18+2;
long long bit_sum[N],ans[N];
int n,num,bit_cnt[N],nowl=1,nen[N],nowr=0,idx[N];
pair<int,int> lis[N];
queue<pair<pair<int,int>,pair<int,int> > > dac_lis;
void upd(int pos,int val){
while(pos<=n){
bit_sum[pos]+=val;
if(val>=0){
++bit_cnt[pos];
}
else{
--bit_cnt[pos];
}
pos+=(pos&-pos);
}
}
long long get_sum(int x){ //sum of first x number
long long sum=0;
for(int i=0,j=LOG-1;j>=0;--j){
if(i+(1<<j)<=n&&bit_cnt[i+(1<<j)]<=x){
x-=bit_cnt[i+(1<<j)];
sum+=bit_sum[i+(1<<j)];
i+=(1<<j);
}
if(x==0){
break;
}
}
return sum;
}
void solve(int l,int r,int lef,int rig){
if(r-lef<num-1){
for(int i=l;i<=r;++i){
ans[i]=-inf;
}
return;
}
int mid=(l+r)>>1,idxmax=0;
long long max1;
ans[mid]=-inf;
if(nowl>rig||nowr<l){
memset(bit_cnt,0,sizeof(bit_cnt));
memset(bit_sum,0,sizeof(bit_sum));
nowl=1;
nowr=0;
}
while(nowr<mid){
++nowr;
upd(n-nen[nowr]+1,lis[nowr].first); //take the max so just reverse them
}
while(nowl<=rig&&nowr-nowl+1>=num){
if(nowl>=lef&&nowl<=rig){
max1=get_sum(num)-lis[mid].second+lis[nowl].second;
if(ans[mid]<max1){
ans[mid]=max1;
idxmax=nowl;
}
}
if(nowl==rig){
break;
}
upd(n-nen[nowl]+1,-lis[nowl].first);
++nowl;
}
if(l<mid){
dac_lis.push({{l,mid-1},{lef,idxmax}});
}
if(mid<r){
dac_lis.push({{mid+1,r},{idxmax,rig}});
}
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
int i,j,k;
cin>>n>>num;
for(i=1;i<=n;++i){
cin>>lis[i].first>>lis[i].second;
lis[i].second*=2;
idx[i]=i;
}
sort(lis+1,lis+1+n,[&](pair<int,int> x,pair<int,int> y){
return x.second<y.second;
});
sort(idx+1,idx+1+n,[&](int x,int y){
return lis[x].first<lis[y].first;
});
for(i=1;i<=n;++i){
nen[idx[i]]=i;
}
dac_lis.push({{1,n},{1,n}});
while(dac_lis.size()){
solve(dac_lis.front().first.first,dac_lis.front().first.second,dac_lis.front().second.first,dac_lis.front().second.second);
dac_lis.pop();
}
cout<<*max_element(ans+1,ans+1+n);
}
Compilation message
cake3.cpp: In function 'int main()':
cake3.cpp:81:8: warning: unused variable 'j' [-Wunused-variable]
int i,j,k;
^
cake3.cpp:81:10: warning: unused variable 'k' [-Wunused-variable]
int i,j,k;
^
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
13 ms |
2680 KB |
Output is correct |
2 |
Correct |
13 ms |
2680 KB |
Output is correct |
3 |
Correct |
10 ms |
2680 KB |
Output is correct |
4 |
Correct |
10 ms |
2680 KB |
Output is correct |
5 |
Correct |
8 ms |
2680 KB |
Output is correct |
6 |
Correct |
6 ms |
2680 KB |
Output is correct |
7 |
Correct |
11 ms |
2680 KB |
Output is correct |
8 |
Correct |
13 ms |
2680 KB |
Output is correct |
9 |
Correct |
14 ms |
2680 KB |
Output is correct |
10 |
Correct |
12 ms |
2684 KB |
Output is correct |
11 |
Correct |
13 ms |
2680 KB |
Output is correct |
12 |
Correct |
11 ms |
2680 KB |
Output is correct |
13 |
Correct |
11 ms |
2680 KB |
Output is correct |
14 |
Correct |
11 ms |
2680 KB |
Output is correct |
15 |
Correct |
11 ms |
2680 KB |
Output is correct |
16 |
Correct |
11 ms |
2680 KB |
Output is correct |
17 |
Correct |
9 ms |
2680 KB |
Output is correct |
18 |
Correct |
8 ms |
2680 KB |
Output is correct |
19 |
Correct |
8 ms |
2680 KB |
Output is correct |
20 |
Correct |
7 ms |
2680 KB |
Output is correct |
21 |
Correct |
9 ms |
2680 KB |
Output is correct |
22 |
Correct |
15 ms |
2936 KB |
Output is correct |
23 |
Correct |
14 ms |
2680 KB |
Output is correct |
24 |
Correct |
12 ms |
2680 KB |
Output is correct |
25 |
Correct |
12 ms |
2800 KB |
Output is correct |
26 |
Correct |
11 ms |
2692 KB |
Output is correct |
27 |
Correct |
12 ms |
2680 KB |
Output is correct |
28 |
Correct |
12 ms |
2680 KB |
Output is correct |
29 |
Correct |
13 ms |
2808 KB |
Output is correct |
30 |
Correct |
13 ms |
2680 KB |
Output is correct |
31 |
Correct |
10 ms |
2680 KB |
Output is correct |
32 |
Correct |
10 ms |
2808 KB |
Output is correct |
33 |
Correct |
11 ms |
2680 KB |
Output is correct |
34 |
Correct |
9 ms |
2680 KB |
Output is correct |
35 |
Correct |
13 ms |
2680 KB |
Output is correct |
36 |
Correct |
12 ms |
2680 KB |
Output is correct |
37 |
Correct |
5 ms |
2680 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
13 ms |
2680 KB |
Output is correct |
2 |
Correct |
13 ms |
2680 KB |
Output is correct |
3 |
Correct |
10 ms |
2680 KB |
Output is correct |
4 |
Correct |
10 ms |
2680 KB |
Output is correct |
5 |
Correct |
8 ms |
2680 KB |
Output is correct |
6 |
Correct |
6 ms |
2680 KB |
Output is correct |
7 |
Correct |
11 ms |
2680 KB |
Output is correct |
8 |
Correct |
13 ms |
2680 KB |
Output is correct |
9 |
Correct |
14 ms |
2680 KB |
Output is correct |
10 |
Correct |
12 ms |
2684 KB |
Output is correct |
11 |
Correct |
13 ms |
2680 KB |
Output is correct |
12 |
Correct |
11 ms |
2680 KB |
Output is correct |
13 |
Correct |
11 ms |
2680 KB |
Output is correct |
14 |
Correct |
11 ms |
2680 KB |
Output is correct |
15 |
Correct |
11 ms |
2680 KB |
Output is correct |
16 |
Correct |
11 ms |
2680 KB |
Output is correct |
17 |
Correct |
9 ms |
2680 KB |
Output is correct |
18 |
Correct |
8 ms |
2680 KB |
Output is correct |
19 |
Correct |
8 ms |
2680 KB |
Output is correct |
20 |
Correct |
7 ms |
2680 KB |
Output is correct |
21 |
Correct |
9 ms |
2680 KB |
Output is correct |
22 |
Correct |
15 ms |
2936 KB |
Output is correct |
23 |
Correct |
14 ms |
2680 KB |
Output is correct |
24 |
Correct |
12 ms |
2680 KB |
Output is correct |
25 |
Correct |
12 ms |
2800 KB |
Output is correct |
26 |
Correct |
11 ms |
2692 KB |
Output is correct |
27 |
Correct |
12 ms |
2680 KB |
Output is correct |
28 |
Correct |
12 ms |
2680 KB |
Output is correct |
29 |
Correct |
13 ms |
2808 KB |
Output is correct |
30 |
Correct |
13 ms |
2680 KB |
Output is correct |
31 |
Correct |
10 ms |
2680 KB |
Output is correct |
32 |
Correct |
10 ms |
2808 KB |
Output is correct |
33 |
Correct |
11 ms |
2680 KB |
Output is correct |
34 |
Correct |
9 ms |
2680 KB |
Output is correct |
35 |
Correct |
13 ms |
2680 KB |
Output is correct |
36 |
Correct |
12 ms |
2680 KB |
Output is correct |
37 |
Correct |
5 ms |
2680 KB |
Output is correct |
38 |
Correct |
192 ms |
2808 KB |
Output is correct |
39 |
Correct |
195 ms |
2960 KB |
Output is correct |
40 |
Correct |
131 ms |
2840 KB |
Output is correct |
41 |
Correct |
142 ms |
2808 KB |
Output is correct |
42 |
Correct |
81 ms |
2808 KB |
Output is correct |
43 |
Correct |
101 ms |
2808 KB |
Output is correct |
44 |
Correct |
190 ms |
2940 KB |
Output is correct |
45 |
Correct |
218 ms |
2908 KB |
Output is correct |
46 |
Correct |
209 ms |
2936 KB |
Output is correct |
47 |
Correct |
228 ms |
2860 KB |
Output is correct |
48 |
Correct |
205 ms |
2808 KB |
Output is correct |
49 |
Correct |
166 ms |
2808 KB |
Output is correct |
50 |
Correct |
171 ms |
2936 KB |
Output is correct |
51 |
Correct |
162 ms |
2808 KB |
Output is correct |
52 |
Correct |
153 ms |
2808 KB |
Output is correct |
53 |
Correct |
162 ms |
2812 KB |
Output is correct |
54 |
Correct |
114 ms |
2808 KB |
Output is correct |
55 |
Correct |
83 ms |
2812 KB |
Output is correct |
56 |
Correct |
81 ms |
2684 KB |
Output is correct |
57 |
Correct |
92 ms |
2808 KB |
Output is correct |
58 |
Correct |
85 ms |
2680 KB |
Output is correct |
59 |
Correct |
176 ms |
2808 KB |
Output is correct |
60 |
Correct |
196 ms |
2808 KB |
Output is correct |
61 |
Correct |
179 ms |
2808 KB |
Output is correct |
62 |
Correct |
144 ms |
2848 KB |
Output is correct |
63 |
Correct |
137 ms |
2812 KB |
Output is correct |
64 |
Correct |
164 ms |
2808 KB |
Output is correct |
65 |
Correct |
298 ms |
2812 KB |
Output is correct |
66 |
Correct |
198 ms |
2816 KB |
Output is correct |
67 |
Correct |
221 ms |
2808 KB |
Output is correct |
68 |
Correct |
177 ms |
2808 KB |
Output is correct |
69 |
Correct |
165 ms |
2680 KB |
Output is correct |
70 |
Correct |
176 ms |
2808 KB |
Output is correct |
71 |
Correct |
228 ms |
2804 KB |
Output is correct |
72 |
Correct |
125 ms |
2808 KB |
Output is correct |
73 |
Correct |
191 ms |
2808 KB |
Output is correct |
74 |
Correct |
7 ms |
2808 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
13 ms |
2680 KB |
Output is correct |
2 |
Correct |
13 ms |
2680 KB |
Output is correct |
3 |
Correct |
10 ms |
2680 KB |
Output is correct |
4 |
Correct |
10 ms |
2680 KB |
Output is correct |
5 |
Correct |
8 ms |
2680 KB |
Output is correct |
6 |
Correct |
6 ms |
2680 KB |
Output is correct |
7 |
Correct |
11 ms |
2680 KB |
Output is correct |
8 |
Correct |
13 ms |
2680 KB |
Output is correct |
9 |
Correct |
14 ms |
2680 KB |
Output is correct |
10 |
Correct |
12 ms |
2684 KB |
Output is correct |
11 |
Correct |
13 ms |
2680 KB |
Output is correct |
12 |
Correct |
11 ms |
2680 KB |
Output is correct |
13 |
Correct |
11 ms |
2680 KB |
Output is correct |
14 |
Correct |
11 ms |
2680 KB |
Output is correct |
15 |
Correct |
11 ms |
2680 KB |
Output is correct |
16 |
Correct |
11 ms |
2680 KB |
Output is correct |
17 |
Correct |
9 ms |
2680 KB |
Output is correct |
18 |
Correct |
8 ms |
2680 KB |
Output is correct |
19 |
Correct |
8 ms |
2680 KB |
Output is correct |
20 |
Correct |
7 ms |
2680 KB |
Output is correct |
21 |
Correct |
9 ms |
2680 KB |
Output is correct |
22 |
Correct |
15 ms |
2936 KB |
Output is correct |
23 |
Correct |
14 ms |
2680 KB |
Output is correct |
24 |
Correct |
12 ms |
2680 KB |
Output is correct |
25 |
Correct |
12 ms |
2800 KB |
Output is correct |
26 |
Correct |
11 ms |
2692 KB |
Output is correct |
27 |
Correct |
12 ms |
2680 KB |
Output is correct |
28 |
Correct |
12 ms |
2680 KB |
Output is correct |
29 |
Correct |
13 ms |
2808 KB |
Output is correct |
30 |
Correct |
13 ms |
2680 KB |
Output is correct |
31 |
Correct |
10 ms |
2680 KB |
Output is correct |
32 |
Correct |
10 ms |
2808 KB |
Output is correct |
33 |
Correct |
11 ms |
2680 KB |
Output is correct |
34 |
Correct |
9 ms |
2680 KB |
Output is correct |
35 |
Correct |
13 ms |
2680 KB |
Output is correct |
36 |
Correct |
12 ms |
2680 KB |
Output is correct |
37 |
Correct |
5 ms |
2680 KB |
Output is correct |
38 |
Correct |
192 ms |
2808 KB |
Output is correct |
39 |
Correct |
195 ms |
2960 KB |
Output is correct |
40 |
Correct |
131 ms |
2840 KB |
Output is correct |
41 |
Correct |
142 ms |
2808 KB |
Output is correct |
42 |
Correct |
81 ms |
2808 KB |
Output is correct |
43 |
Correct |
101 ms |
2808 KB |
Output is correct |
44 |
Correct |
190 ms |
2940 KB |
Output is correct |
45 |
Correct |
218 ms |
2908 KB |
Output is correct |
46 |
Correct |
209 ms |
2936 KB |
Output is correct |
47 |
Correct |
228 ms |
2860 KB |
Output is correct |
48 |
Correct |
205 ms |
2808 KB |
Output is correct |
49 |
Correct |
166 ms |
2808 KB |
Output is correct |
50 |
Correct |
171 ms |
2936 KB |
Output is correct |
51 |
Correct |
162 ms |
2808 KB |
Output is correct |
52 |
Correct |
153 ms |
2808 KB |
Output is correct |
53 |
Correct |
162 ms |
2812 KB |
Output is correct |
54 |
Correct |
114 ms |
2808 KB |
Output is correct |
55 |
Correct |
83 ms |
2812 KB |
Output is correct |
56 |
Correct |
81 ms |
2684 KB |
Output is correct |
57 |
Correct |
92 ms |
2808 KB |
Output is correct |
58 |
Correct |
85 ms |
2680 KB |
Output is correct |
59 |
Correct |
176 ms |
2808 KB |
Output is correct |
60 |
Correct |
196 ms |
2808 KB |
Output is correct |
61 |
Correct |
179 ms |
2808 KB |
Output is correct |
62 |
Correct |
144 ms |
2848 KB |
Output is correct |
63 |
Correct |
137 ms |
2812 KB |
Output is correct |
64 |
Correct |
164 ms |
2808 KB |
Output is correct |
65 |
Correct |
298 ms |
2812 KB |
Output is correct |
66 |
Correct |
198 ms |
2816 KB |
Output is correct |
67 |
Correct |
221 ms |
2808 KB |
Output is correct |
68 |
Correct |
177 ms |
2808 KB |
Output is correct |
69 |
Correct |
165 ms |
2680 KB |
Output is correct |
70 |
Correct |
176 ms |
2808 KB |
Output is correct |
71 |
Correct |
228 ms |
2804 KB |
Output is correct |
72 |
Correct |
125 ms |
2808 KB |
Output is correct |
73 |
Correct |
191 ms |
2808 KB |
Output is correct |
74 |
Correct |
7 ms |
2808 KB |
Output is correct |
75 |
Execution timed out |
4090 ms |
7156 KB |
Time limit exceeded |
76 |
Halted |
0 ms |
0 KB |
- |