Submission #1677873
Source Code Expand
#include <cstdio>
#include <cstring>
#include <algorithm>
#define repu(i,x,y) for (int i=x; i<=y; ++i)
#define mid ((l+r)>>1)
using namespace std;
int n,tot,p[20100],id[20][20100],log_[20100],dfn[400100],low[400100],stk[400100],top,scc[400100],clk;
struct data
{
int x,id;
bool operator<(const data &t) const
{
return x<t.x;
}
} a[20100];
struct edge
{
int u,v;
edge *nxt;
} pool[1000000],*tp=pool,*fst[400100],*bnd;
void addedge(int u,int v)
{
*tp=(edge){u,v,fst[u]},fst[u]=tp++;
}
void add(int x,int l,int r)
{
if (l>r)
return;
int t=p[x>n?x-n:x+n];
if (l<=t && r>=t)
{
add(x,l,t-1),add(x,t+1,r);
return;
}
t=log_[r-l+1];
addedge(x,id[t][l]),addedge(x,id[t][r-(1<<t)+1]);
}
void dfs(int x)
{
dfn[x]=low[x]=++clk,stk[++top]=x;
for (edge *i=fst[x]; i; i=i->nxt)
{
if (!dfn[i->v])
dfs(i->v);
if (!scc[i->v])
low[x]=min(low[x],low[i->v]);
}
if (dfn[x]==low[x])
for (; stk[top+1]!=x; scc[stk[top--]]=x);
}
bool solve(int d)
{
for (; tp>bnd; --tp,fst[tp->u]=tp->nxt);
for (int i=1,l=1,r=1; i<=n*2; ++i)
{
for (; a[i].x-a[l].x>=d; ++l);
for (; r<n*2 && a[r+1].x-a[i].x<d; ++r);
add(a[i].id,l,i-1),add(a[i].id,i+1,r);
}
memset(dfn,0,sizeof(dfn));
memset(scc,0,sizeof(scc));
repu(i,1,tot)
if (!dfn[i])
dfs(i);
repu(i,1,n)
if (scc[i]==scc[i+n])
return 0;
return 1;
}
int main()
{
scanf("%d",&n);
repu(i,1,n)
{
int x,y;
scanf("%d%d",&x,&y);
a[i]=(data){x,i},a[i+n]=(data){y,i+n};
}
sort(a+1,a+1+n*2);
repu(i,1,n*2)
p[a[i].id]=i,id[0][i]=a[i].id>n?a[i].id-n:a[i].id+n;
repu(i,2,n*2)
log_[i]=log_[i>>1]+1;
tot=n*2;
repu(i,1,log_[n*2])
repu(j,1,n*2-(1<<i)+1)
{
id[i][j]=++tot;
addedge(id[i][j],id[i-1][j]);
addedge(id[i][j],id[i-1][j+(1<<i-1)]);
}
bnd=tp;
int l=1,r=1e9;
while (l<r)
solve(mid)?l=mid+1:r=mid;
printf("%d\n",l-1);
return 0;
}
Submission Info
Submission Time
2017-10-12 16:51:40+0900
Task
F - Flags
User
dwjshift
Language
C++14 (GCC 5.4.1)
Score
1200
Code Size
2257 Byte
Status
AC
Exec Time
662 ms
Memory
30848 KB
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:78:19: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d",&n);
^
./Main.cpp:82:28: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d",&x,&y);
^
Judge Result
Set Name
Sample
All
Score / Max Score
0 / 0
1200 / 1200
Status
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
10368 KB
00_example_02.txt
AC
8 ms
10368 KB
00_example_03.txt
AC
8 ms
10368 KB
01.txt
AC
12 ms
10624 KB
02.txt
AC
9 ms
10496 KB
03.txt
AC
8 ms
10368 KB
04.txt
AC
8 ms
10368 KB
05.txt
AC
8 ms
10368 KB
06.txt
AC
281 ms
29440 KB
07.txt
AC
267 ms
29440 KB
08.txt
AC
267 ms
29440 KB
09.txt
AC
12 ms
10624 KB
10.txt
AC
9 ms
10496 KB
11.txt
AC
8 ms
10368 KB
12.txt
AC
8 ms
10368 KB
13.txt
AC
8 ms
10368 KB
14.txt
AC
232 ms
29184 KB
15.txt
AC
237 ms
29184 KB
16.txt
AC
243 ms
29184 KB
17.txt
AC
13 ms
10624 KB
18.txt
AC
9 ms
10496 KB
19.txt
AC
279 ms
29056 KB
20.txt
AC
273 ms
29056 KB
21.txt
AC
510 ms
30336 KB
22.txt
AC
559 ms
30592 KB
23.txt
AC
662 ms
30592 KB
24.txt
AC
446 ms
30720 KB
25.txt
AC
484 ms
30848 KB
26.txt
AC
316 ms
29568 KB
27.txt
AC
8 ms
10368 KB