Submission #1691589
Source Code Expand
#include <bits/stdc++.h>
#define ls (n<<1)
#define rs (ls|1)
using namespace std;
const int N=300010;
struct point{int x,y;}a[N];
int w,h,n,ans,st1[N],st2[N],top1,top2,t[4*N],tag[4*N];
bool cmp(point x,point y){return x.x<y.x;}
void build(int n,int l,int r)
{
if (l==r) t[n]=-a[l-1].x;
else
{
int mid=(l+r)>>1;
build(ls,l,mid),build(rs,mid+1,r);
t[n]=max(t[ls],t[rs]);
}
}
void modify(int n,int l,int r,int L,int R,int k)
{
if ((L<=l)&&(r<=R)) t[n]+=k,tag[n]+=k;
else
{
int mid=(l+r)>>1;
if (L<=mid) modify(ls,l,mid,L,R,k);
if (mid<R) modify(rs,mid+1,r,L,R,k);
t[n]=max(t[ls],t[rs])+tag[n];
}
}
void solve()
{
memset(t,0,sizeof(t)),memset(tag,0,sizeof(tag)),top1=top2=0;
sort(a+1,a+n+1,cmp);
if (a[n].x!=w) a[++n]=(point){w,-1};
build(1,1,n);
for (int i=1; i<=n; i++)
if (a[i].y>h/2)
{
modify(1,1,n,i,i,h);
ans=max(ans,2*(a[i].x+t[1]));
modify(1,1,n,st1[top1]+1,i,a[i].y-h);
while ((top1)&&(a[st1[top1]].y>a[i].y))
modify(1,1,n,st1[top1-1]+1,st1[top1],a[i].y-a[st1[top1]].y),top1--;
st1[++top1]=i;
}else
{
modify(1,1,n,i,i,h);
ans=max(ans,2*(a[i].x+t[1]));
modify(1,1,n,st2[top2]+1,i,-a[i].y);
while ((top2)&&(a[st2[top2]].y<a[i].y))
modify(1,1,n,st2[top2-1]+1,st2[top2],a[st2[top2]].y-a[i].y),top2--;
st2[++top2]=i;
}
n-=(a[n].y<0);
}
void work()
{
scanf("%d %d %d",&w,&h,&n);
for (int i=1; i<=n; i++) scanf("%d %d",&a[i].x,&a[i].y);
solve();
for (int i=1; i<=n; i++) swap(a[i].x,a[i].y);
swap(w,h);
solve();
printf("%d",ans);
}
int main()
{
work();
return 0;
}
Submission Info
Submission Time |
|
Task |
F - Snuke's Coloring 2 |
User |
YMDragon |
Language |
C++14 (GCC 5.4.1) |
Score |
1600 |
Code Size |
1668 Byte |
Status |
AC |
Exec Time |
430 ms |
Memory |
14336 KB |
Compile Error
./Main.cpp: In function ‘void work()’:
./Main.cpp:64:28: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d %d %d",&w,&h,&n);
^
./Main.cpp:65:58: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
for (int i=1; i<=n; i++) scanf("%d %d",&a[i].x,&a[i].y);
^
Judge Result
Set Name |
sample |
All |
Score / Max Score |
0 / 0 |
1600 / 1600 |
Status |
|
|
Set Name |
Test Cases |
sample |
sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt |
All |
dia_01.txt, dia_02.txt, dia_03.txt, dia_04.txt, dial_01.txt, dial_02.txt, dial_03.txt, dial_04.txt, dial_05.txt, dial_06.txt, dialr_01.txt, dialr_02.txt, dialr_03.txt, dialr_04.txt, diar_01.txt, diar_02.txt, diar_03.txt, hand_01.txt, hand_02.txt, hand_03.txt, hand_04.txt, hand_05.txt, poc_t_1.txt, poc_t_2.txt, poc_t_3.txt, poc_t_4.txt, poc_t_5.txt, poc_w_1.txt, poc_w_2.txt, random0_01.txt, random0_02.txt, random0_03.txt, random1_01.txt, random1_02.txt, random1_03.txt, random1_04.txt, random1_05.txt, random1_06.txt, random1_07.txt, rect_01.txt, rect_02.txt, rect_03.txt, rect_04.txt, rect_05.txt, rect_06.txt, rect_07.txt, rect_08.txt, rect_09.txt, rect_10.txt, sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, x_01.txt, x_02.txt, x_03.txt, x_04.txt |
Case Name |
Status |
Exec Time |
Memory |
dia_01.txt |
AC |
416 ms |
14336 KB |
dia_02.txt |
AC |
416 ms |
14336 KB |
dia_03.txt |
AC |
415 ms |
14336 KB |
dia_04.txt |
AC |
420 ms |
14336 KB |
dial_01.txt |
AC |
414 ms |
14336 KB |
dial_02.txt |
AC |
418 ms |
14336 KB |
dial_03.txt |
AC |
419 ms |
14336 KB |
dial_04.txt |
AC |
421 ms |
14336 KB |
dial_05.txt |
AC |
421 ms |
14336 KB |
dial_06.txt |
AC |
421 ms |
14336 KB |
dialr_01.txt |
AC |
401 ms |
14336 KB |
dialr_02.txt |
AC |
407 ms |
14336 KB |
dialr_03.txt |
AC |
406 ms |
14336 KB |
dialr_04.txt |
AC |
409 ms |
14336 KB |
diar_01.txt |
AC |
426 ms |
14336 KB |
diar_02.txt |
AC |
429 ms |
14336 KB |
diar_03.txt |
AC |
430 ms |
14336 KB |
hand_01.txt |
AC |
5 ms |
12544 KB |
hand_02.txt |
AC |
5 ms |
12544 KB |
hand_03.txt |
AC |
5 ms |
12544 KB |
hand_04.txt |
AC |
5 ms |
12544 KB |
hand_05.txt |
AC |
5 ms |
12544 KB |
poc_t_1.txt |
AC |
5 ms |
12544 KB |
poc_t_2.txt |
AC |
5 ms |
12544 KB |
poc_t_3.txt |
AC |
5 ms |
12544 KB |
poc_t_4.txt |
AC |
5 ms |
12544 KB |
poc_t_5.txt |
AC |
5 ms |
12544 KB |
poc_w_1.txt |
AC |
5 ms |
12544 KB |
poc_w_2.txt |
AC |
5 ms |
12544 KB |
random0_01.txt |
AC |
408 ms |
14336 KB |
random0_02.txt |
AC |
406 ms |
14336 KB |
random0_03.txt |
AC |
413 ms |
14336 KB |
random1_01.txt |
AC |
406 ms |
14336 KB |
random1_02.txt |
AC |
406 ms |
14336 KB |
random1_03.txt |
AC |
410 ms |
14336 KB |
random1_04.txt |
AC |
410 ms |
14336 KB |
random1_05.txt |
AC |
412 ms |
14336 KB |
random1_06.txt |
AC |
407 ms |
14336 KB |
random1_07.txt |
AC |
406 ms |
14336 KB |
rect_01.txt |
AC |
407 ms |
14336 KB |
rect_02.txt |
AC |
414 ms |
14336 KB |
rect_03.txt |
AC |
406 ms |
14336 KB |
rect_04.txt |
AC |
408 ms |
14336 KB |
rect_05.txt |
AC |
404 ms |
14336 KB |
rect_06.txt |
AC |
400 ms |
14336 KB |
rect_07.txt |
AC |
407 ms |
14336 KB |
rect_08.txt |
AC |
407 ms |
14336 KB |
rect_09.txt |
AC |
407 ms |
14336 KB |
rect_10.txt |
AC |
407 ms |
14336 KB |
sample_01.txt |
AC |
5 ms |
12544 KB |
sample_02.txt |
AC |
5 ms |
12544 KB |
sample_03.txt |
AC |
5 ms |
12544 KB |
sample_04.txt |
AC |
5 ms |
12544 KB |
x_01.txt |
AC |
329 ms |
14336 KB |
x_02.txt |
AC |
330 ms |
14336 KB |
x_03.txt |
AC |
330 ms |
14336 KB |
x_04.txt |
AC |
333 ms |
14336 KB |