Submission #1868167


Source Code Expand

#include"bits/stdc++.h"


#define PB push_back
#define PF push_front
#define LB lower_bound
#define UB upper_bound
#define fr(x) freopen(x,"r",stdin)
#define fw(x) freopen(x,"w",stdout)
#define iout(x) printf("%d\n",x)
#define lout(x) printf("%lld\n",x)
#define REP(x,l,u) for(int x = (l);x<=(u);x++)
#define RREP(x,l,u) for(int x = (l);x>=(u);x--)
#define mst(x,a) memset(x,a,sizeof(x))
#define PII pair<int,int>
#define PLL pair<ll,ll>
#define MP make_pair
#define se second
#define fi first
#define dbg(x) cout<<#x<<" = "<<(x)<<endl;
#define sz(x) ((int)x.size())
#define cl(x) x.clear()

typedef  long long ll;
typedef unsigned long long ull;
typedef double db;
typedef long double ld;
using namespace std;

const int maxn = 200010;
const int mod = 1e9+7;
const int MAX = 1000000010;
const double eps = 1e-6;
const double PI = acos(-1);

template<typename T> inline void read(T &x){
x=0;T f=1;char ch;do{ch=getchar();if(ch=='-')f=-1;}while(ch<'0'||ch>'9');do x=x*10+ch-'0',ch=getchar();while(ch<='9'&&ch>='0');x*=f;
}

template<typename A,typename B> inline void read(A&x,B&y){read(x);read(y);}
template<typename A,typename B,typename C> inline void read(A&x,B&y,C&z){read(x);read(y);read(z);}
template<typename A,typename B,typename C,typename D> inline void read(A&x,B&y,C&z,D&w){read(x);read(y);read(z);read(w);}
template<typename A,typename B> inline A fexp(A x,B p){A ans=1;for(;p;p>>=1,x=1LL*x*x%mod)if(p&1)ans=1LL*ans*x%mod;return ans;}
template<typename A,typename B> inline A fexp(A x,B p,A mo){A ans=1;for(;p;p>>=1,x=1LL*x*x%mo)if(p&1)ans=1LL*ans*x%mo;return ans;}

int n,N;

PII A[maxn];

vector<int> G[maxn],G2[maxn];

int vi[maxn],S[maxn],scc[maxn],scccnt,top;

struct Node{
	int l,r;
}T[maxn];

int OP(int x){
	int nn=n>>1;
	if(x<=nn)return x+nn;
	else return x-nn;
}

void build(int i,int l,int r){
	T[i].l=l;T[i].r=r;G[i+n].clear();N=max(N,i+n);
	if(l==r){
		G[i+n].PB(OP(A[l].se));
		return;
	}
	int M=l+r>>1;
	build(i<<1,l,M);build(i<<1|1,M+1,r);
	G[i+n].PB((i<<1)+n);G[i+n].PB((i<<1|1)+n);
}

void add(int i,int l,int r,int s){
	if(l<=T[i].l&&T[i].r<=r){
		G[s].PB(i+n);
		return;
	}
	int M=T[i].l+T[i].r>>1;
	if(l<=M)add(i<<1,l,r,s);if(r>M)add(i<<1|1,l,r,s);
}

void dfs(int u){
	if(vi[u])return;vi[u]=1;
	for(auto v:G[u])dfs(v);
	S[++top]=u;
}
void dfs2(int u){
	if(scc[u])return;scc[u]=scccnt;
	for(auto v:G2[u])dfs2(v);
}

void findscc(){
	REP(i,1,N)G2[i].clear();
	REP(u,1,N)for(auto v:G[u])G2[v].PB(u);
	REP(i,1,N)vi[i]=scc[i]=0;
	top=0;
	REP(i,1,N)dfs(i);
	scccnt=0;
	RREP(i,N,1){
		int x=S[i];
		if(!scc[x]){
			scccnt++;
			dfs2(x);
		}
	}
}

bool check(int M){
	REP(i,1,n)G[i].clear();
	N=0;build(1,1,n);
	REP(i,1,n){
		int x=LB(A+1,A+n+1,MP(A[i].fi-M+1,0))-A;
		if(x<i)add(1,x,i-1,A[i].se);
		x=UB(A+1,A+n+1,MP(A[i].fi+M-1,n+1))-A-1;
		if(x>i)add(1,i+1,x,A[i].se);
	}
//	cout<<N<<endl;
	findscc();
//	REP(i,1,N)cout<<scc[i]<<' ';cout<<endl;
	int nn=n>>1;
	REP(i,1,nn)if(scc[i]==scc[i+nn])return false;
	return true;
}

void Work(){
	int l=0,r=A[n].fi-A[1].fi;
	while(l<r){
		int M=(l+r>>1)+1;
		if(check(M))l=M;else r=M-1;
	}
	iout(l);
}

void Init(){
	read(n);
	REP(i,1,n){
		read(A[i].fi),A[i].se=i;
		read(A[i+n].fi),A[i+n].se=i+n;
	}
	n<<=1;
	sort(A+1,A+n+1);
}

int main(){
	Init();
	Work();
	return 0;
}

Submission Info

Submission Time
Task F - Flags
User yanQval
Language C++14 (GCC 5.4.1)
Score 1200
Code Size 3394 Byte
Status AC
Exec Time 683 ms
Memory 29440 KB

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 4 ms 12544 KB
00_example_02.txt AC 4 ms 12544 KB
00_example_03.txt AC 5 ms 12544 KB
01.txt AC 15 ms 13056 KB
02.txt AC 8 ms 12672 KB
03.txt AC 5 ms 12544 KB
04.txt AC 6 ms 12544 KB
05.txt AC 6 ms 12672 KB
06.txt AC 453 ms 26368 KB
07.txt AC 440 ms 26240 KB
08.txt AC 447 ms 26368 KB
09.txt AC 16 ms 12928 KB
10.txt AC 8 ms 12672 KB
11.txt AC 5 ms 12544 KB
12.txt AC 6 ms 12544 KB
13.txt AC 6 ms 12544 KB
14.txt AC 437 ms 24064 KB
15.txt AC 446 ms 24192 KB
16.txt AC 444 ms 24064 KB
17.txt AC 17 ms 12928 KB
18.txt AC 9 ms 12672 KB
19.txt AC 511 ms 25856 KB
20.txt AC 495 ms 25728 KB
21.txt AC 641 ms 26112 KB
22.txt AC 652 ms 26240 KB
23.txt AC 683 ms 29440 KB
24.txt AC 575 ms 28672 KB
25.txt AC 606 ms 28672 KB
26.txt AC 495 ms 27264 KB
27.txt AC 4 ms 12544 KB