Submission #8526354


Source Code Expand

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<stack>
#include<cstring>
#define P pair<int,int>
#define MP make_pair
#define fi first
#define se second
#define N 200010
using namespace std;
int nxt[N<<2],to[N<<2],head[N],cnt;
void add(int u,int v)
{
	nxt[++cnt]=head[u];
	to[cnt]=v;
	head[u]=cnt;
}
int dfn[N],low[N],id[N],ids,totn;
stack<int>s;
void tarjan(int u)
{
	dfn[u]=low[u]=++ids;
	s.push(u);
	for(int i=head[u];i;i=nxt[i])
	{
		int v=to[i];
		if(!dfn[v])
		{
			int v=to[i];
			tarjan(v);
			low[u]=min(low[v],low[u]);
		}
		else if(!id[v]) low[u]=min(low[u],dfn[v]);
	}
	if(low[u]==dfn[u])
	{
		int iu=0;
		totn++;
		do
		{
			id[iu=s.top()]=totn;
			s.pop();
		}while(iu!=u);
	}
}
P num[N];
int tree[N],tids;
void build(int u,int l,int r)
{
	if(l==r){tree[u]=num[l].se;return;}
	int mid=(l+r)>>1;
	tree[u]=++tids;
	build(u<<1,l,mid);
	build(u<<1|1,mid+1,r);
	add(tree[u],tree[u<<1]);
	add(tree[u],tree[u<<1|1]);
}
void insert(int u,int l,int r,int L,int R,int id)
{
	if(L>r || R<l) return;
	if(L<=l && r<=R)
	{
		add(id,tree[u]);
		return ;
	}
	int mid=(l+r)>>1;
	if(L<=mid) insert(u<<1,l,mid,L,R,id);
	if(R>mid) insert(u<<1|1,mid+1,r,L,R,id);
}
int n;
int lim[2][N];
void clear()
{
	memset(head,0,sizeof(head));
	cnt=ids=totn=0;tids=2*n;
	memset(dfn,0,sizeof(dfn));
	memset(low,0,sizeof(low));
	memset(id,0,sizeof(id));
}
bool check(int x)
{
	clear();
	build(1,1,2*n);
	for(int i=1;i<=n;i++)
	{
		for(int o=0;o<=1;o++)
		{
			int l=lower_bound(num+1,num+2*n+1,MP(lim[o][i]-x+1,0))-num;
			int r=upper_bound(num+1,num+2*n+1,MP(lim[o][i]+x-1,2*n+1))-num-1;
			int u=lower_bound(num+1,num+2*n+1,MP(lim[o][i],(o^1)*n+i))-num;
			int ui=o*n+i;
            insert(1,1,2*n,l,u-1,ui);
            insert(1,1,2*n,u+1,r,ui);
		}
	}
	while(!s.empty()) s.pop();
	for(int i=1;i<=tids;i++)
	if(!dfn[i]) tarjan(i);
	for(int i=1;i<=n;i++)
	if(id[i]==id[i+n]) return false;
	return true;
}
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++) scanf("%d%d",&lim[0][i],&lim[1][i]);
	for(int i=1;i<=n;i++)
	{
		num[i*2-1]=MP(lim[0][i],i+n);
		num[i*2]=MP(lim[1][i],i);
	}
	sort(num+1,num+n*2+1);
	int l=0,r=1000000000;
	while(l<r)
	{
		int mid=(l+r)>>1;
		if(check(mid)) l=mid+1;
		else r=mid-1;
	}
	if(!check(l)) l--;
	printf("%d\n",l);
	return 0;
}

Submission Info

Submission Time
Task F - Flags
User Flying2018
Language C++ (GCC 5.4.1)
Score 1200
Code Size 2404 Byte
Status AC
Exec Time 436 ms
Memory 13312 KiB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:107:16: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d",&n);
                ^
./Main.cpp:108:59: 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",&lim[0][i],&lim[1][i]);
                                                           ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 1200 / 1200
Status
AC × 3
AC × 30
Set Name Test Cases
Sample 00_example_01.txt, 00_example_02.txt, 00_example_03.txt
All 00_example_01.txt, 00_example_02.txt, 00_example_03.txt, 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt
Case Name Status Exec Time Memory
00_example_01.txt AC 8 ms 8448 KiB
00_example_02.txt AC 8 ms 8448 KiB
00_example_03.txt AC 8 ms 8448 KiB
01.txt AC 18 ms 8576 KiB
02.txt AC 11 ms 8448 KiB
03.txt AC 9 ms 8448 KiB
04.txt AC 9 ms 8448 KiB
05.txt AC 9 ms 8448 KiB
06.txt AC 375 ms 12416 KiB
07.txt AC 375 ms 12416 KiB
08.txt AC 376 ms 12416 KiB
09.txt AC 18 ms 8576 KiB
10.txt AC 11 ms 8448 KiB
11.txt AC 8 ms 8448 KiB
12.txt AC 9 ms 8448 KiB
13.txt AC 9 ms 8448 KiB
14.txt AC 370 ms 12416 KiB
15.txt AC 369 ms 12288 KiB
16.txt AC 370 ms 12376 KiB
17.txt AC 18 ms 8576 KiB
18.txt AC 11 ms 8448 KiB
19.txt AC 384 ms 12416 KiB
20.txt AC 382 ms 12416 KiB
21.txt AC 436 ms 12416 KiB
22.txt AC 436 ms 12416 KiB
23.txt AC 431 ms 13312 KiB
24.txt AC 340 ms 13184 KiB
25.txt AC 338 ms 12928 KiB
26.txt AC 377 ms 12544 KiB
27.txt AC 8 ms 8448 KiB