提出 #4268458
ソースコード 拡げる
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
int n;
int a[maxn],b[maxn];
int tot=0;
pair<int,int>c[maxn];
int pre[maxn],nxt[maxn];
int pos[maxn];
int D;
void del(int x){
int pp=pre[x],nn=nxt[x];
if(pp){
nxt[pp]=nn;
}
if(nn){
pre[nn]=pp;
}
}
int ok;
int vis[maxn];
int opp(int x){
if(x<=n)
return x+n;
return x-n;
}
int val(int x){
int valx= x<=n ? a[x] : b[x-n];
return valx;
}
int dis(int x,int y){
int valx= x<=n ? a[x] : b[x-n];
int valy= y<=n ? a[y] : b[y-n];
return abs(valx-valy);
}
int T=0;
int data[maxn],cnt=0;
void dfs(int x){
if(vis[x]){
return ;
}
// cout<<x<<endl;
data[++cnt]=val(x);
vis[x]=T;
if(vis[opp(x)]==T)
ok=0;
//del(x);
for(int p=nxt[x];p&&dis(x,p)<D;p=nxt[p]){
dfs(opp(p));
}
for(int p=pre[x];p&&dis(x,p)<D;p=pre[p]){
dfs(opp(p));
}
}
void init(){
for(int i=1;i<=tot;i++){
if(i<tot)
nxt[c[i].second]=c[i+1].second;
else
nxt[c[i].second]=0;
if(i>1)
pre[c[i].second]=c[i-1].second;
else
pre[c[i].second]=0;
}
for(int i=1;i<=tot;i++)
vis[i]=0;
}
int can[maxn];
bool check(int mid){
D=mid;
for(int i=1;i<=tot;i++){
T++;
cnt=0;
init();
ok=1;
if(!vis[i]){
//cout<<"new"<<endl;
dfs(i);
}
can[i]=ok;
}
for(int i=1;i<=n;i++)
if(!can[i]&&!can[i+n])
return false;
return true;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d%d",&a[i],&b[i]);
for(int i=1;i<=n;i++){
c[++tot]=make_pair(a[i],i);
c[++tot]=make_pair(b[i],i+n);
}
sort(c+1,c+1+tot);
for(int i=1;i<=tot;i++){
pos[c[i].second]=i;
}
// cout<< check(5) <<endl;
// return 0;
int l=0,r=1e9+10;
while(l<r){
int mid=(l+r)/2;
if(check(mid))
l=mid+1;
else
r=mid;
}
cout<<l-1<<endl;
return 0;
}
提出情報
提出日時
2019-02-15 17:39:23+0900
問題
F - Flags
ユーザ
kzoacn
言語
C++ (GCC 5.4.1)
得点
0
コード長
1738 Byte
結果
TLE
実行時間
5255 ms
メモリ
2176 KiB
コンパイルエラー
./Main.cpp: In function ‘int main()’:
./Main.cpp:97:16: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d",&n);
^
./Main.cpp:99:28: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d",&a[i],&b[i]);
^
ジャッジ結果
セット名
Sample
All
得点 / 配点
0 / 0
0 / 1200
結果
セット名
テストケース
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
ケース名
結果
実行時間
メモリ
00_example_01.txt
AC
7 ms
1024 KiB
00_example_02.txt
AC
2 ms
1024 KiB
00_example_03.txt
AC
10 ms
1024 KiB
01.txt
TLE
5255 ms
1152 KiB
02.txt
AC
1038 ms
1024 KiB
03.txt
AC
39 ms
1024 KiB
04.txt
AC
63 ms
1024 KiB
05.txt
AC
86 ms
1024 KiB
06.txt
TLE
5255 ms
2176 KiB
07.txt
TLE
5255 ms
2176 KiB
08.txt
TLE
5255 ms
2176 KiB
09.txt
TLE
5255 ms
1024 KiB
10.txt
AC
486 ms
1024 KiB
11.txt
AC
21 ms
1024 KiB
12.txt
AC
30 ms
1024 KiB
13.txt
AC
40 ms
1024 KiB
14.txt
TLE
5255 ms
2176 KiB
15.txt
TLE
5255 ms
2176 KiB
16.txt
TLE
5255 ms
2176 KiB
17.txt
TLE
5255 ms
1024 KiB
18.txt
AC
880 ms
1024 KiB
19.txt
TLE
5255 ms
2176 KiB
20.txt
TLE
5255 ms
2176 KiB
21.txt
TLE
5255 ms
2176 KiB
22.txt
TLE
5255 ms
2176 KiB
23.txt
TLE
5255 ms
2176 KiB
24.txt
TLE
5255 ms
2176 KiB
25.txt
TLE
5255 ms
2176 KiB
26.txt
TLE
5255 ms
2176 KiB
27.txt
AC
2 ms
1024 KiB