Submission #1372377


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=300005,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>=0&&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-1];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(0);ins(h);
	for(int i=1;i<=n;i++)
		ins(y[i]);
	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+1])*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
Task F - Snuke's Coloring 2
User rqgao2014
Language C++14 (GCC 5.4.1)
Score 0
Code Size 2801 Byte
Status WA
Exec Time 632 ms
Memory 17792 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:96: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:98: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
AC × 4
AC × 49
WA × 8
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 625 ms 17792 KB
dia_02.txt AC 625 ms 17792 KB
dia_03.txt AC 626 ms 17792 KB
dia_04.txt AC 630 ms 17792 KB
dial_01.txt AC 625 ms 17792 KB
dial_02.txt AC 628 ms 17792 KB
dial_03.txt AC 629 ms 17792 KB
dial_04.txt AC 631 ms 17792 KB
dial_05.txt AC 632 ms 17792 KB
dial_06.txt AC 631 ms 17792 KB
dialr_01.txt AC 590 ms 17792 KB
dialr_02.txt AC 590 ms 17792 KB
dialr_03.txt AC 589 ms 17792 KB
dialr_04.txt AC 588 ms 17792 KB
diar_01.txt AC 623 ms 17792 KB
diar_02.txt WA 627 ms 17792 KB
diar_03.txt AC 628 ms 17792 KB
hand_01.txt AC 5 ms 14592 KB
hand_02.txt AC 5 ms 14592 KB
hand_03.txt AC 5 ms 14592 KB
hand_04.txt AC 5 ms 14592 KB
hand_05.txt AC 5 ms 14592 KB
poc_t_1.txt AC 5 ms 14592 KB
poc_t_2.txt AC 5 ms 14592 KB
poc_t_3.txt AC 5 ms 14592 KB
poc_t_4.txt WA 5 ms 14592 KB
poc_t_5.txt AC 5 ms 14592 KB
poc_w_1.txt AC 5 ms 14592 KB
poc_w_2.txt AC 5 ms 14592 KB
random0_01.txt WA 588 ms 17792 KB
random0_02.txt WA 588 ms 17792 KB
random0_03.txt WA 594 ms 17792 KB
random1_01.txt AC 587 ms 17792 KB
random1_02.txt AC 586 ms 17792 KB
random1_03.txt AC 590 ms 17792 KB
random1_04.txt AC 590 ms 17792 KB
random1_05.txt AC 607 ms 17792 KB
random1_06.txt AC 588 ms 17792 KB
random1_07.txt AC 586 ms 17792 KB
rect_01.txt AC 587 ms 17792 KB
rect_02.txt AC 588 ms 17792 KB
rect_03.txt AC 587 ms 17792 KB
rect_04.txt AC 554 ms 17792 KB
rect_05.txt AC 584 ms 17792 KB
rect_06.txt AC 560 ms 17792 KB
rect_07.txt WA 587 ms 17792 KB
rect_08.txt AC 587 ms 17792 KB
rect_09.txt WA 587 ms 17792 KB
rect_10.txt WA 587 ms 17792 KB
sample_01.txt AC 5 ms 14592 KB
sample_02.txt AC 5 ms 14592 KB
sample_03.txt AC 5 ms 14592 KB
sample_04.txt AC 5 ms 14592 KB
x_01.txt AC 530 ms 17792 KB
x_02.txt AC 532 ms 17792 KB
x_03.txt AC 530 ms 17792 KB
x_04.txt AC 533 ms 17792 KB