Submission #1372381
Source Code Expand
#include<bits/stdc++.h>
#define sqr(x) ((x)*(x))
#define ll long long
#define ull unsigned long long
#define ui unsigned int
#define ld long double
#define vi vector<int>
#define pii pair<int,int>
#define pb push_back
#define mp make_pair
#define debuge cerr<<"isok"<<endl
#define debug(x) cerr<<#x<<"="<<x<<endl
#define SS second
#define FF first
#define ls (k<<1)
#define rs (k<<1|1)
#define inf 0x3f3f3f3f
#define clr(a,x) memset(a,x,sizeof(a))
#define cpy(a,x) memcpy(a,x,sizeof(a))
#define file(x) freopen(x".in","r",stdin),freopen(x".out","w",stdout);
using namespace std;
const int N=1050005,M=100005,mod=1e9+7;
template<class T> inline void gmin(T &x,const T &y){if(x>y) x=y;}
template<class T> inline void gmax(T &x,const T &y){if(x<y) x=y;}
inline void ch(int &x,int y){x=(x+y)%mod;}
inline void read(int &x){
x=0;char ch=getchar(),rev=0;
while(ch>'9'||ch<'0') rev=(ch=='-'),ch=getchar();
while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();
x=rev?-x:x;
}
inline int exp(int x,int y){
int ans=1;
while(y){
if(y&1) ans=(ll)ans*x%mod;
x=(ll)x*x%mod;y>>=1;
}return ans;
}
int w,h,n,cnt,ans,x[N],y[N],yy[N],sta[N][2],g[N][2],top[2];
int p[N<<2],flag[N<<2];
inline void ins(int x){if(x>=1&&x<h) yy[++cnt]=x;}
inline int get(int y){return lower_bound(yy+1,yy+cnt+1,y)-yy;}
inline void add(int k,int b){p[k]+=b;flag[k]+=b;}
inline void push(int k){
if(!flag[k]) return;
add(ls,flag[k]);add(rs,flag[k]);
flag[k]=0;
}
void ch(int l,int r,int x,int y,int k,int b){
if(x<=l&&r<=y){add(k,b);return;}
push(k);
int mid=l+r>>1;
if(x<=mid) ch(l,mid,x,y,ls,b);
if(y>mid) ch(mid+1,r,x,y,rs,b);
p[k]=max(p[ls],p[rs]);
}
void build(int l,int r,int k){
if(l==r){p[k]=-yy[l];return;}
int mid=l+r>>1;
build(l,mid,ls);build(mid+1,r,rs);
p[k]=max(p[ls],p[rs]);
}
void solve(int mid){
clr(flag,0);clr(top,0);cnt=0;
ins(1);ins(h-1);
for(int i=1;i<=n;i++){
ins(y[i]);
ins(y[i]-1);
ins(y[i]+1);
}
sort(yy+1,yy+cnt+1);
cnt=unique(yy+1,yy+cnt+1)-yy-1;
build(1,cnt,1);
for(int i=1;i<=cnt;i++)
g[i][0]=mid,g[i][1]=w-mid;
for(int i=1;i<=n;i++)
if(x[i]<=mid) gmin(g[get(y[i])][0],mid-x[i]); else gmin(g[get(y[i])][1],x[i]-mid);
for(int i=1;i<=cnt;i++){
for(int x=0;x<2;x++){
int last=i;
ch(1,cnt,i,i,1,g[i][x]);
while(top[x]&&g[sta[top[x]][x]][x]>g[i][x]){
int l=sta[top[x]-1][x]+1,r=sta[top[x]][x];
ch(1,cnt,l,r,1,g[i][x]-g[r][x]);
top[x]--;
}
sta[++top[x]][x]=i;
}
gmax(ans,(p[1]+yy[i]+2)*2);
}
}
int main(){
#ifdef rqgao2014
freopen("input.txt","r",stdin);
#endif
scanf("%d%d%d",&w,&h,&n);
for(int i=1;i<=n;i++)
scanf("%d%d",&x[i],&y[i]);
solve(w/2);
for(int i=1;i<=n;i++)
swap(x[i],y[i]);
swap(w,h);solve(w/2);
printf("%d\n",max(ans,max(w,h)*2+2));
return 0;
}
Submission Info
Submission Time
2017-06-24 12:20:13+0900
Task
F - Snuke's Coloring 2
User
rqgao2014
Language
C++14 (GCC 5.4.1)
Score
0
Code Size
2841 Byte
Status
RE
Exec Time
1569 ms
Memory
286976 KB
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:99:26: 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:101:28: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d",&x[i],&y[i]);
^
Judge Result
Set Name
sample
All
Score / Max Score
0 / 0
0 / 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
710 ms
37120 KB
dia_02.txt
AC
709 ms
37120 KB
dia_03.txt
AC
709 ms
37120 KB
dia_04.txt
AC
713 ms
37120 KB
dial_01.txt
AC
1009 ms
37120 KB
dial_02.txt
AC
1085 ms
43264 KB
dial_03.txt
AC
1013 ms
43264 KB
dial_04.txt
AC
1163 ms
43264 KB
dial_05.txt
AC
1167 ms
43264 KB
dial_06.txt
AC
1164 ms
43264 KB
dialr_01.txt
AC
921 ms
37120 KB
dialr_02.txt
AC
893 ms
37120 KB
dialr_03.txt
AC
871 ms
37120 KB
dialr_04.txt
AC
893 ms
37120 KB
diar_01.txt
AC
915 ms
37120 KB
diar_02.txt
AC
1143 ms
43264 KB
diar_03.txt
AC
1266 ms
45312 KB
hand_01.txt
AC
9 ms
28928 KB
hand_02.txt
AC
9 ms
28928 KB
hand_03.txt
AC
9 ms
28928 KB
hand_04.txt
AC
9 ms
28928 KB
hand_05.txt
RE
227 ms
286976 KB
poc_t_1.txt
AC
9 ms
28928 KB
poc_t_2.txt
AC
9 ms
28928 KB
poc_t_3.txt
AC
9 ms
28928 KB
poc_t_4.txt
AC
9 ms
28928 KB
poc_t_5.txt
AC
9 ms
28928 KB
poc_w_1.txt
AC
10 ms
28928 KB
poc_w_2.txt
AC
10 ms
28928 KB
random0_01.txt
AC
729 ms
37120 KB
random0_02.txt
AC
925 ms
37120 KB
random0_03.txt
AC
1569 ms
45312 KB
random1_01.txt
AC
780 ms
37120 KB
random1_02.txt
AC
1151 ms
43264 KB
random1_03.txt
AC
1292 ms
43264 KB
random1_04.txt
AC
1482 ms
45312 KB
random1_05.txt
AC
1567 ms
45312 KB
random1_06.txt
AC
1104 ms
45312 KB
random1_07.txt
AC
966 ms
43264 KB
rect_01.txt
AC
1155 ms
43264 KB
rect_02.txt
AC
1129 ms
43264 KB
rect_03.txt
AC
1174 ms
43264 KB
rect_04.txt
AC
1456 ms
47360 KB
rect_05.txt
AC
1169 ms
43264 KB
rect_06.txt
AC
831 ms
37120 KB
rect_07.txt
AC
1178 ms
43264 KB
rect_08.txt
AC
1178 ms
43264 KB
rect_09.txt
AC
1185 ms
43264 KB
rect_10.txt
WA
1186 ms
43264 KB
sample_01.txt
AC
9 ms
28928 KB
sample_02.txt
AC
9 ms
28928 KB
sample_03.txt
AC
9 ms
28928 KB
sample_04.txt
AC
9 ms
28928 KB
x_01.txt
AC
613 ms
37120 KB
x_02.txt
AC
613 ms
37120 KB
x_03.txt
AC
612 ms
37120 KB
x_04.txt
AC
617 ms
37120 KB