Submission #1125339


Source Code Expand

#include<vector>
#include<cmath>
#include<map>
#include<cstdlib>
#include<iostream>
#include<sstream>
#include<fstream>
#include<string>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<set>
#include<stack>
#include<bitset>
#include<functional>
#include<ctime>
#include<queue>
#include<deque>
#include<complex>
#include<cassert>
using namespace std;
#define pb push_back
#define pf push_front
typedef long long lint;
typedef complex<double> P;
#define mp make_pair
#define fi first
#define se second
typedef pair<int,int> pint;
typedef pair<int,pint> tint;
#define All(s) s.begin(),s.end()
#define rAll(s) s.rbegin(),s.rend()
#define REP(i,a,b) for(int i=a;i<b;i++)
#define rep(i,n) REP(i,0,n)
ostream &operator<<(ostream &os, const vector<int> &a) {
	os<<"[";
	rep(i,a.size()){
		os<<a[i];
		if(i<a.size()-1) os<<",";
	}
	os<<"]";
	return os; 
}
#define N 32768
#define maxv 114514
vector<pint> v,v2;
vector<tint> t;
vector<int> gr[maxv],rgr[maxv];
vector<int> vs;
bool sumi[maxv];
int cmp[maxv];
vector<int> pos[25252];
int n;
void dfs(int v){
	sumi[v]=true;
	rep(i,gr[v].size()){
		if(!sumi[gr[v][i]]) dfs(gr[v][i]);
	}
	vs.pb(v);
}
void rdfs(int v,int k){
	sumi[v]=true;cmp[v]=k;
	rep(i,rgr[v].size()){
		if(!sumi[rgr[v][i]]) rdfs(rgr[v][i],k);
	}
}
void scc()
{
	memset(sumi,false,sizeof(sumi));
	vs.clear();
	rep(i,n*2){
		if(!sumi[i]) dfs(i);
	}
	memset(sumi,false,sizeof(sumi));
	//memset(cmp,-1,sizeof(cmp));
	int k=0;
	for(int i=vs.size()-1;i>=0;i--){
		if(!sumi[vs[i]]) rdfs(vs[i],k++);
	}
}
void aedge(int v,int w){
	gr[v].pb(w);
	rgr[w].pb(v);
}
//[a,b)にvから辺を貼る
void query(int a,int b,int v,int k=0,int l=0,int r=N){
	//REP(i,a,b) aedge(v,i+2*n+N-1);return;
	if(r<=a || b<=l) return;
	if(a<=l && r<=b){
		//cout<<k<<endl;
		aedge(v,k+2*n);return;
	}
	query(a,b,v,k*2+1,l,(l+r)/2);
	query(a,b,v,k*2+2,(l+r)/2,r);
}
bool cal(int mi){
	rep(i,maxv-5) gr[i].clear(),rgr[i].clear();
	rep(i,N-1) aedge(2*n+i,2*n+i*2+1),aedge(2*n+i,2*n+i*2+2);
	rep(i,n){
		aedge(pos[i][0],pos[i][1]+2*n+N-1);
		aedge(pos[i][1]+2*n+N-1,pos[i][0]);
		aedge(pos[i][1],pos[i][0]+2*n+N-1);
		aedge(pos[i][0]+2*n+N-1,pos[i][1]);
	}
	rep(i,n*2){
		int l=lower_bound(All(v),mp(v[i].fi-mi+1,-1))-v.begin();
		int r=lower_bound(All(v),mp(v[i].fi+mi,-1))-v.begin();
		//cout<<i<<' '<<l<<' '<<r<<endl;
		//cout<<l<<'q'<<i<<endl;
		query(l,i,i);
		//cout<<i+1<<'q'<<r<<endl;
		query(i+1,r,i);
	}
	scc();
	rep(i,2*n){
		//cout<<cmp[i]<<' '<<cmp[i+2*n+N-1]<<endl;
		if(cmp[i]==cmp[i+2*n+N-1]) return false;
	}
	return true;
}
int main()
{
	int x,y,inf=1001001001;
	cin>>n;
	rep(i,n){
		cin>>x>>y;
		if(x>y) swap(x,y);
		v.pb(mp(x,i));v.pb(mp(y,i));
	}
	sort(All(v));v.pb(mp(inf*2,-1));
	rep(i,2*n) pos[v[i].se].pb(i);
	//rep(i,n) cout<<pos[i]<<endl;
	
	int lo=0,hi=inf;
	//cal(5);
	while(hi>lo){
		int mi=(hi+lo+1)/2;
		if(cal(mi)) lo=mi;else hi=mi-1;
	}
	cout<<lo<<endl;
}

Submission Info

Submission Time
Task F - Flags
User sky58
Language C++14 (GCC 5.4.1)
Score 1200
Code Size 3018 Byte
Status AC
Exec Time 797 ms
Memory 24828 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 32 ms 9472 KB
00_example_02.txt AC 32 ms 9472 KB
00_example_03.txt AC 33 ms 9472 KB
01.txt AC 48 ms 9856 KB
02.txt AC 38 ms 9600 KB
03.txt AC 34 ms 9472 KB
04.txt AC 34 ms 9472 KB
05.txt AC 34 ms 9472 KB
06.txt AC 598 ms 23164 KB
07.txt AC 602 ms 23164 KB
08.txt AC 590 ms 23036 KB
09.txt AC 48 ms 9856 KB
10.txt AC 38 ms 9600 KB
11.txt AC 33 ms 9472 KB
12.txt AC 34 ms 9472 KB
13.txt AC 35 ms 9472 KB
14.txt AC 552 ms 20860 KB
15.txt AC 562 ms 20860 KB
16.txt AC 562 ms 20860 KB
17.txt AC 49 ms 9856 KB
18.txt AC 39 ms 9600 KB
19.txt AC 618 ms 22652 KB
20.txt AC 623 ms 22652 KB
21.txt AC 712 ms 22396 KB
22.txt AC 739 ms 22396 KB
23.txt AC 797 ms 24828 KB
24.txt AC 649 ms 24572 KB
25.txt AC 583 ms 23676 KB
26.txt AC 679 ms 23932 KB
27.txt AC 32 ms 9472 KB