# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
709952 |
2023-03-15T01:22:00 Z |
victor_gao |
Cake 3 (JOI19_cake3) |
C++17 |
|
1051 ms |
210948 KB |
//#pragma GCC optimize("Ofast,unroll-loops,O3")
//#pragma GCC optimize("avx,avx2,sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,fma,tune=native")
#include<bits/stdc++.h>
//#include<bits/extc++.h>
//#pragma pack(1)
#define fast ios::sync_with_stdio(0); cin.tie(0);
#define int long long
#define pii pair<int,int>
#define x first
#define y second
#define N 200015
using namespace std;
//using namespace __gnu_pbds;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
//typedef tree<int, null_type,less_equal<int>, rb_tree_tag,tree_order_statistics_node_update> order_multiset;
//typedef tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update> order_set;
int n,m,ans=-1e18;
pii arr[N];
struct Node{
int lch,rch,sum,cnt;
void pull(Node a,Node b){
sum=a.sum+b.sum;
cnt=a.cnt+b.cnt;
}
Node(int a=0,int b=0,int c=0,int d=0):lch(a),rch(b),sum(c),cnt(d){}
};
struct lisan{
vector<int>vt;
void in(int x){ vt.push_back(x); }
void build(){
sort(vt.begin(),vt.end());
vt.resize(unique(vt.begin(),vt.end())-vt.begin());
}
int idx(int x){ return upper_bound(vt.begin(),vt.end(),x)-vt.begin(); }
int val(int p){ return vt[p-1]; }
}uni;
struct segtree{
int num=1;
Node seg[32*N];
int add(int l,int r,int i,int pos,int c){
num++; seg[num]=seg[i];
if (l==r){
seg[num].cnt++;
seg[num].sum+=uni.val(l);
return num;
}
int mid=(l+r)>>1,j=num;
if (pos<=mid) seg[j].lch=add(l,mid,seg[i].lch,pos,c);
else seg[j].rch=add(mid+1,r,seg[i].rch,pos,c);
seg[j].pull(seg[seg[j].lch],seg[seg[j].rch]);
return j;
}
int query_pos(int l,int r,int i,int j,int k){
if (l==r) return l;
int mid=(l+r)>>1,rc1=seg[i].rch,rc2=seg[j].rch;
int right_have=seg[rc2].cnt-seg[rc1].cnt;
if (right_have>=k) return query_pos(mid+1,r,rc1,rc2,k);
else return query_pos(l,mid,seg[i].lch,seg[j].lch,k-right_have);
}
Node query(int l,int r,int i,int j,int ll,int rr){
// seg[j]-seg[i];
if (ll<=l&&rr>=r) return Node(0,0,seg[j].sum-seg[i].sum,seg[j].cnt-seg[i].cnt);
int mid=(l+r)>>1;
if (rr<=mid) return query(l,mid,seg[i].lch,seg[j].lch,ll,rr);
else if (ll>mid) return query(mid+1,r,seg[i].rch,seg[j].rch,ll,rr);
else {
Node q1=query(l,mid,seg[i].lch,seg[j].lch,ll,rr);
Node q2=query(mid+1,r,seg[i].rch,seg[j].rch,ll,rr);
Node ans=Node(); ans.pull(q1,q2);
return ans;
}
}
}seg;
int root[N];
int Query(int l,int r){
if (r-l+1<m) return -1e18;
int p=seg.query_pos(1,n,root[l-1],root[r],m),val=uni.val(p);
Node now=seg.query(1,n,root[l-1],root[r],p,n);
if (now.cnt>m){
now.sum=(now.sum-(now.cnt-m)*val);
now.cnt=m;
}
return now.sum-2*(arr[r].y-arr[l].y);
}
void Merge(int l,int r,int ql,int qr){
if (ql>qr) return;
if (l==r){
for (int i=ql;i<=qr;i++)
ans=max(ans,Query(l,i));
return;
}
int mid=(ql+qr)>>1,best=-1e18,from=l;
for (int i=l;i<=r;i++){
int c=Query(i,mid);
if (c>best){
best=c;
from=i;
}
}
ans=max(ans,best);
Merge(l,from,ql,mid-1);
Merge(from,r,mid+1,qr);
}
bool cmp(pii a,pii b){
if (a.y!=b.y) return a.y<b.y;
return a.x<b.x;
}
signed main(){
fast
cin>>n>>m;
for (int i=1;i<=n;i++){
cin>>arr[i].x>>arr[i].y;
uni.in(arr[i].x);
}
uni.build();
for (int i=1;i<=n;i++)
arr[i].x=uni.idx(arr[i].x);
sort(arr+1,arr+1+n,cmp);
for (int i=1;i<=n;i++){
root[i]=seg.add(1,n,root[i-1],arr[i].x,1);
}
Merge(1,n,m,n);
cout<<ans<<'\n';
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
82 ms |
200748 KB |
Output is correct |
2 |
Correct |
80 ms |
200616 KB |
Output is correct |
3 |
Correct |
85 ms |
200728 KB |
Output is correct |
4 |
Correct |
86 ms |
200652 KB |
Output is correct |
5 |
Correct |
91 ms |
200628 KB |
Output is correct |
6 |
Correct |
87 ms |
200644 KB |
Output is correct |
7 |
Correct |
77 ms |
200688 KB |
Output is correct |
8 |
Correct |
79 ms |
200692 KB |
Output is correct |
9 |
Correct |
89 ms |
200656 KB |
Output is correct |
10 |
Correct |
80 ms |
200652 KB |
Output is correct |
11 |
Correct |
78 ms |
200616 KB |
Output is correct |
12 |
Correct |
82 ms |
200704 KB |
Output is correct |
13 |
Correct |
84 ms |
200652 KB |
Output is correct |
14 |
Correct |
84 ms |
200684 KB |
Output is correct |
15 |
Correct |
92 ms |
200692 KB |
Output is correct |
16 |
Correct |
79 ms |
200680 KB |
Output is correct |
17 |
Correct |
87 ms |
200636 KB |
Output is correct |
18 |
Correct |
87 ms |
200640 KB |
Output is correct |
19 |
Correct |
82 ms |
200628 KB |
Output is correct |
20 |
Correct |
81 ms |
200780 KB |
Output is correct |
21 |
Correct |
83 ms |
200700 KB |
Output is correct |
22 |
Correct |
81 ms |
200652 KB |
Output is correct |
23 |
Correct |
75 ms |
200636 KB |
Output is correct |
24 |
Correct |
75 ms |
200660 KB |
Output is correct |
25 |
Correct |
89 ms |
200628 KB |
Output is correct |
26 |
Correct |
88 ms |
200700 KB |
Output is correct |
27 |
Correct |
77 ms |
200692 KB |
Output is correct |
28 |
Correct |
77 ms |
200676 KB |
Output is correct |
29 |
Correct |
81 ms |
200652 KB |
Output is correct |
30 |
Correct |
107 ms |
200672 KB |
Output is correct |
31 |
Correct |
80 ms |
200652 KB |
Output is correct |
32 |
Correct |
84 ms |
200672 KB |
Output is correct |
33 |
Correct |
80 ms |
200724 KB |
Output is correct |
34 |
Correct |
81 ms |
200696 KB |
Output is correct |
35 |
Correct |
79 ms |
200680 KB |
Output is correct |
36 |
Correct |
80 ms |
200652 KB |
Output is correct |
37 |
Correct |
82 ms |
200632 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
82 ms |
200748 KB |
Output is correct |
2 |
Correct |
80 ms |
200616 KB |
Output is correct |
3 |
Correct |
85 ms |
200728 KB |
Output is correct |
4 |
Correct |
86 ms |
200652 KB |
Output is correct |
5 |
Correct |
91 ms |
200628 KB |
Output is correct |
6 |
Correct |
87 ms |
200644 KB |
Output is correct |
7 |
Correct |
77 ms |
200688 KB |
Output is correct |
8 |
Correct |
79 ms |
200692 KB |
Output is correct |
9 |
Correct |
89 ms |
200656 KB |
Output is correct |
10 |
Correct |
80 ms |
200652 KB |
Output is correct |
11 |
Correct |
78 ms |
200616 KB |
Output is correct |
12 |
Correct |
82 ms |
200704 KB |
Output is correct |
13 |
Correct |
84 ms |
200652 KB |
Output is correct |
14 |
Correct |
84 ms |
200684 KB |
Output is correct |
15 |
Correct |
92 ms |
200692 KB |
Output is correct |
16 |
Correct |
79 ms |
200680 KB |
Output is correct |
17 |
Correct |
87 ms |
200636 KB |
Output is correct |
18 |
Correct |
87 ms |
200640 KB |
Output is correct |
19 |
Correct |
82 ms |
200628 KB |
Output is correct |
20 |
Correct |
81 ms |
200780 KB |
Output is correct |
21 |
Correct |
83 ms |
200700 KB |
Output is correct |
22 |
Correct |
81 ms |
200652 KB |
Output is correct |
23 |
Correct |
75 ms |
200636 KB |
Output is correct |
24 |
Correct |
75 ms |
200660 KB |
Output is correct |
25 |
Correct |
89 ms |
200628 KB |
Output is correct |
26 |
Correct |
88 ms |
200700 KB |
Output is correct |
27 |
Correct |
77 ms |
200692 KB |
Output is correct |
28 |
Correct |
77 ms |
200676 KB |
Output is correct |
29 |
Correct |
81 ms |
200652 KB |
Output is correct |
30 |
Correct |
107 ms |
200672 KB |
Output is correct |
31 |
Correct |
80 ms |
200652 KB |
Output is correct |
32 |
Correct |
84 ms |
200672 KB |
Output is correct |
33 |
Correct |
80 ms |
200724 KB |
Output is correct |
34 |
Correct |
81 ms |
200696 KB |
Output is correct |
35 |
Correct |
79 ms |
200680 KB |
Output is correct |
36 |
Correct |
80 ms |
200652 KB |
Output is correct |
37 |
Correct |
82 ms |
200632 KB |
Output is correct |
38 |
Correct |
84 ms |
200756 KB |
Output is correct |
39 |
Correct |
86 ms |
200740 KB |
Output is correct |
40 |
Correct |
82 ms |
200780 KB |
Output is correct |
41 |
Correct |
83 ms |
200800 KB |
Output is correct |
42 |
Correct |
90 ms |
200824 KB |
Output is correct |
43 |
Correct |
93 ms |
200704 KB |
Output is correct |
44 |
Correct |
84 ms |
200820 KB |
Output is correct |
45 |
Correct |
85 ms |
200800 KB |
Output is correct |
46 |
Correct |
86 ms |
200772 KB |
Output is correct |
47 |
Correct |
94 ms |
200772 KB |
Output is correct |
48 |
Correct |
83 ms |
200724 KB |
Output is correct |
49 |
Correct |
84 ms |
200864 KB |
Output is correct |
50 |
Correct |
90 ms |
200732 KB |
Output is correct |
51 |
Correct |
106 ms |
200772 KB |
Output is correct |
52 |
Correct |
85 ms |
200740 KB |
Output is correct |
53 |
Correct |
82 ms |
200796 KB |
Output is correct |
54 |
Correct |
83 ms |
200832 KB |
Output is correct |
55 |
Correct |
87 ms |
200720 KB |
Output is correct |
56 |
Correct |
82 ms |
200780 KB |
Output is correct |
57 |
Correct |
94 ms |
200772 KB |
Output is correct |
58 |
Correct |
103 ms |
200724 KB |
Output is correct |
59 |
Correct |
83 ms |
200800 KB |
Output is correct |
60 |
Correct |
81 ms |
200720 KB |
Output is correct |
61 |
Correct |
82 ms |
200724 KB |
Output is correct |
62 |
Correct |
97 ms |
200764 KB |
Output is correct |
63 |
Correct |
91 ms |
200888 KB |
Output is correct |
64 |
Correct |
82 ms |
200728 KB |
Output is correct |
65 |
Correct |
84 ms |
200788 KB |
Output is correct |
66 |
Correct |
87 ms |
200844 KB |
Output is correct |
67 |
Correct |
85 ms |
200784 KB |
Output is correct |
68 |
Correct |
84 ms |
200780 KB |
Output is correct |
69 |
Correct |
81 ms |
200744 KB |
Output is correct |
70 |
Correct |
80 ms |
200800 KB |
Output is correct |
71 |
Correct |
89 ms |
200744 KB |
Output is correct |
72 |
Correct |
87 ms |
200724 KB |
Output is correct |
73 |
Correct |
89 ms |
200832 KB |
Output is correct |
74 |
Correct |
80 ms |
200780 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
82 ms |
200748 KB |
Output is correct |
2 |
Correct |
80 ms |
200616 KB |
Output is correct |
3 |
Correct |
85 ms |
200728 KB |
Output is correct |
4 |
Correct |
86 ms |
200652 KB |
Output is correct |
5 |
Correct |
91 ms |
200628 KB |
Output is correct |
6 |
Correct |
87 ms |
200644 KB |
Output is correct |
7 |
Correct |
77 ms |
200688 KB |
Output is correct |
8 |
Correct |
79 ms |
200692 KB |
Output is correct |
9 |
Correct |
89 ms |
200656 KB |
Output is correct |
10 |
Correct |
80 ms |
200652 KB |
Output is correct |
11 |
Correct |
78 ms |
200616 KB |
Output is correct |
12 |
Correct |
82 ms |
200704 KB |
Output is correct |
13 |
Correct |
84 ms |
200652 KB |
Output is correct |
14 |
Correct |
84 ms |
200684 KB |
Output is correct |
15 |
Correct |
92 ms |
200692 KB |
Output is correct |
16 |
Correct |
79 ms |
200680 KB |
Output is correct |
17 |
Correct |
87 ms |
200636 KB |
Output is correct |
18 |
Correct |
87 ms |
200640 KB |
Output is correct |
19 |
Correct |
82 ms |
200628 KB |
Output is correct |
20 |
Correct |
81 ms |
200780 KB |
Output is correct |
21 |
Correct |
83 ms |
200700 KB |
Output is correct |
22 |
Correct |
81 ms |
200652 KB |
Output is correct |
23 |
Correct |
75 ms |
200636 KB |
Output is correct |
24 |
Correct |
75 ms |
200660 KB |
Output is correct |
25 |
Correct |
89 ms |
200628 KB |
Output is correct |
26 |
Correct |
88 ms |
200700 KB |
Output is correct |
27 |
Correct |
77 ms |
200692 KB |
Output is correct |
28 |
Correct |
77 ms |
200676 KB |
Output is correct |
29 |
Correct |
81 ms |
200652 KB |
Output is correct |
30 |
Correct |
107 ms |
200672 KB |
Output is correct |
31 |
Correct |
80 ms |
200652 KB |
Output is correct |
32 |
Correct |
84 ms |
200672 KB |
Output is correct |
33 |
Correct |
80 ms |
200724 KB |
Output is correct |
34 |
Correct |
81 ms |
200696 KB |
Output is correct |
35 |
Correct |
79 ms |
200680 KB |
Output is correct |
36 |
Correct |
80 ms |
200652 KB |
Output is correct |
37 |
Correct |
82 ms |
200632 KB |
Output is correct |
38 |
Correct |
84 ms |
200756 KB |
Output is correct |
39 |
Correct |
86 ms |
200740 KB |
Output is correct |
40 |
Correct |
82 ms |
200780 KB |
Output is correct |
41 |
Correct |
83 ms |
200800 KB |
Output is correct |
42 |
Correct |
90 ms |
200824 KB |
Output is correct |
43 |
Correct |
93 ms |
200704 KB |
Output is correct |
44 |
Correct |
84 ms |
200820 KB |
Output is correct |
45 |
Correct |
85 ms |
200800 KB |
Output is correct |
46 |
Correct |
86 ms |
200772 KB |
Output is correct |
47 |
Correct |
94 ms |
200772 KB |
Output is correct |
48 |
Correct |
83 ms |
200724 KB |
Output is correct |
49 |
Correct |
84 ms |
200864 KB |
Output is correct |
50 |
Correct |
90 ms |
200732 KB |
Output is correct |
51 |
Correct |
106 ms |
200772 KB |
Output is correct |
52 |
Correct |
85 ms |
200740 KB |
Output is correct |
53 |
Correct |
82 ms |
200796 KB |
Output is correct |
54 |
Correct |
83 ms |
200832 KB |
Output is correct |
55 |
Correct |
87 ms |
200720 KB |
Output is correct |
56 |
Correct |
82 ms |
200780 KB |
Output is correct |
57 |
Correct |
94 ms |
200772 KB |
Output is correct |
58 |
Correct |
103 ms |
200724 KB |
Output is correct |
59 |
Correct |
83 ms |
200800 KB |
Output is correct |
60 |
Correct |
81 ms |
200720 KB |
Output is correct |
61 |
Correct |
82 ms |
200724 KB |
Output is correct |
62 |
Correct |
97 ms |
200764 KB |
Output is correct |
63 |
Correct |
91 ms |
200888 KB |
Output is correct |
64 |
Correct |
82 ms |
200728 KB |
Output is correct |
65 |
Correct |
84 ms |
200788 KB |
Output is correct |
66 |
Correct |
87 ms |
200844 KB |
Output is correct |
67 |
Correct |
85 ms |
200784 KB |
Output is correct |
68 |
Correct |
84 ms |
200780 KB |
Output is correct |
69 |
Correct |
81 ms |
200744 KB |
Output is correct |
70 |
Correct |
80 ms |
200800 KB |
Output is correct |
71 |
Correct |
89 ms |
200744 KB |
Output is correct |
72 |
Correct |
87 ms |
200724 KB |
Output is correct |
73 |
Correct |
89 ms |
200832 KB |
Output is correct |
74 |
Correct |
80 ms |
200780 KB |
Output is correct |
75 |
Correct |
861 ms |
210260 KB |
Output is correct |
76 |
Correct |
1051 ms |
210012 KB |
Output is correct |
77 |
Correct |
815 ms |
210264 KB |
Output is correct |
78 |
Correct |
867 ms |
210352 KB |
Output is correct |
79 |
Correct |
319 ms |
210428 KB |
Output is correct |
80 |
Correct |
317 ms |
210176 KB |
Output is correct |
81 |
Correct |
653 ms |
209596 KB |
Output is correct |
82 |
Correct |
823 ms |
209728 KB |
Output is correct |
83 |
Correct |
740 ms |
209936 KB |
Output is correct |
84 |
Correct |
733 ms |
210016 KB |
Output is correct |
85 |
Correct |
637 ms |
209576 KB |
Output is correct |
86 |
Correct |
387 ms |
209412 KB |
Output is correct |
87 |
Correct |
414 ms |
209184 KB |
Output is correct |
88 |
Correct |
628 ms |
209220 KB |
Output is correct |
89 |
Correct |
574 ms |
209616 KB |
Output is correct |
90 |
Correct |
422 ms |
209952 KB |
Output is correct |
91 |
Correct |
318 ms |
209384 KB |
Output is correct |
92 |
Correct |
318 ms |
209276 KB |
Output is correct |
93 |
Correct |
384 ms |
209668 KB |
Output is correct |
94 |
Correct |
298 ms |
209988 KB |
Output is correct |
95 |
Correct |
405 ms |
209988 KB |
Output is correct |
96 |
Correct |
277 ms |
209292 KB |
Output is correct |
97 |
Correct |
281 ms |
209928 KB |
Output is correct |
98 |
Correct |
279 ms |
209848 KB |
Output is correct |
99 |
Correct |
261 ms |
209856 KB |
Output is correct |
100 |
Correct |
251 ms |
209380 KB |
Output is correct |
101 |
Correct |
237 ms |
209372 KB |
Output is correct |
102 |
Correct |
641 ms |
209392 KB |
Output is correct |
103 |
Correct |
598 ms |
209268 KB |
Output is correct |
104 |
Correct |
743 ms |
209688 KB |
Output is correct |
105 |
Correct |
474 ms |
209688 KB |
Output is correct |
106 |
Correct |
515 ms |
209856 KB |
Output is correct |
107 |
Correct |
445 ms |
209560 KB |
Output is correct |
108 |
Correct |
789 ms |
210172 KB |
Output is correct |
109 |
Correct |
679 ms |
210816 KB |
Output is correct |
110 |
Correct |
238 ms |
208852 KB |
Output is correct |
111 |
Correct |
369 ms |
208944 KB |
Output is correct |
112 |
Correct |
665 ms |
208548 KB |
Output is correct |
113 |
Correct |
291 ms |
210948 KB |
Output is correct |