Submission #393730
Source Code Expand
#include<iostream>
#include<fstream>
#include<sstream>
#include<string>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<ctime>
#include<stack>
#include<queue>
#include<set>
#include<map>
#include<vector>
#include<list>
#include<algorithm>
#include<utility>
#include<complex>
#include<functional>
using namespace std;
#define LL long long
struct P{
LL x, y;
};
using namespace std;
//Compare for sorting
inline bool LessX(const P& left, const P& right){
if (left.x == right.x)return(left.y < right.y);
return left.x<right.x;
}
inline bool LessY(const P& left, const P& right){
return(left.y < right.y);
}
P xx[10000000], yy[10000000],ss[10000000];
int ix, iy,is;
#define dist(_x,_y,__x,__y) (((_x)-(__x))*((_x)-(__x))+((_y)-(__y))*((_y)-(__y)))
#define distP(a,b) dist((a.x),(a.y),(b.x),(b.y))
void Closest_Pair_rec(int n,int xs, int ys, P *p1, P *p2, LL* qdist){
P *vx = xx + xs;
P *vy = yy + ys;
/* cout << "vx:";
for (int i = 0; i < n; i++)
printf("(%lld,%lld)", vx[i].x, vx[i].y); cout << endl;
for (int i = 0; i < n; i++)
printf("(%lld,%lld)", vy[i].x, vy[i].y); cout << endl;*/
if (n == 3){
LL d1 = distP(vx[0], vx[1]), d2 = distP(vx[1], vx[2]), d3 = distP(vx[2], vx[0]);
(*qdist) = d1; *p1 = vx[0], *p2 = vx[1];
if (*qdist>d2)(*qdist) =d2,*p1 = vx[1], *p2 = vx[2];
if (*qdist>d3)(*qdist) = d3, *p1 = vx[0] , *p2 = vx[2];
return;
}
if(n==2){
(*qdist) = distP(vx[0], vx[1]); *p1 = vx[0], *p2 = vx[1];
return;
}
int half = n / 2;
int l = iy, r = iy+half,tempiy=iy;
P middle = vx[half];
P rp1, rp2;
LL rd;
for (int i = 0; i < n; i++){
if (LessX(vy[i], middle))
yy[l++] = vy[i];
else
yy[r++] = vy[i];
}
iy += n;
Closest_Pair_rec(n / 2, xs, tempiy, p1, p2, qdist);
Closest_Pair_rec(n-half, xs+half, tempiy+half, &rp1, &rp2, &rd);
if (*qdist>rd)*p1 = rp1, *p2 = rp2, *qdist = rd;
int k = 0;
P *vs = ss + is;
for (int i = 0; i < n; i++)
{
rd = (vy[i].x - middle.x)*(vy[i].x - middle.x);
if (rd < *qdist)
vs[k++] = vy[i];
}
for (int i = 0; i < k - 1; i++)
for (int j = i + 1; j < k&&vs[j].y - vs[i].y < *qdist; j++){
rd = distP(vs[i], vs[j]);
if (*qdist > rd){
*qdist = rd;
*p1 = vs[i];
*p2 = vs[j];
}
}
is += k;
}
void Closest_Pair(int n, vector<P>& list, P* p1, P* p2, LL* qdist){
ix = n, iy = n,is=0;
for (int i = 0; i < n; i++)
xx[i] = yy[i] = list[i];
sort(xx, xx+n, LessX);
sort(yy, yy+n, LessY);
Closest_Pair_rec(n,0,0,p1, p2, qdist);
}
int main(void){
int N; cin >> N;
LL a, b;
P p1, p2;
vector<P> A(N), B(N);
for (int i = 0; i < N; i++){
cin >> A[i].x >> A[i].y;
}
Closest_Pair(N, A, &p1, &p2, &a);
for (int i = 0; i < N; i++){
cin >> B[i].x >> B[i].y;
}
Closest_Pair(N, B, &p1, &p2, &b);
//cout << b << endl;
printf("%.6f", sqrt((double)b / (double)a));
return(0);
}
Submission Info
Submission Time |
|
Task |
D - Big Bang |
User |
btk15049 |
Language |
C++11 (GCC 4.9.2) |
Score |
100 |
Code Size |
2952 Byte |
Status |
AC |
Exec Time |
483 ms |
Memory |
38132 KB |
Judge Result
Set Name |
Sample |
Subtask1 |
Subtask2 |
Score / Max Score |
0 / 0 |
50 / 50 |
50 / 50 |
Status |
|
|
|
Set Name |
Test Cases |
Sample |
sample_01.txt, sample_02.txt |
Subtask1 |
sample_01.txt, sample_02.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask1_24.txt, subtask1_25.txt, subtask1_26.txt, subtask1_27.txt, subtask1_28.txt, subtask1_29.txt |
Subtask2 |
sample_01.txt, sample_02.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask1_24.txt, subtask1_25.txt, subtask1_26.txt, subtask1_27.txt, subtask1_28.txt, subtask1_29.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt, subtask2_12.txt, subtask2_13.txt, subtask2_14.txt, subtask2_15.txt, subtask2_16.txt, subtask2_17.txt, subtask2_18.txt, subtask2_19.txt, subtask2_20.txt, subtask2_21.txt, subtask2_22.txt, subtask2_23.txt, subtask2_24.txt, subtask2_25.txt, subtask2_26.txt, subtask2_27.txt, subtask2_28.txt, subtask2_29.txt |
Case Name |
Status |
Exec Time |
Memory |
sample_01.txt |
AC |
25 ms |
924 KB |
sample_02.txt |
AC |
24 ms |
924 KB |
subtask1_01.txt |
AC |
29 ms |
1308 KB |
subtask1_02.txt |
AC |
26 ms |
936 KB |
subtask1_03.txt |
AC |
32 ms |
1304 KB |
subtask1_04.txt |
AC |
32 ms |
1568 KB |
subtask1_05.txt |
AC |
30 ms |
1060 KB |
subtask1_06.txt |
AC |
31 ms |
1008 KB |
subtask1_07.txt |
AC |
29 ms |
1048 KB |
subtask1_08.txt |
AC |
35 ms |
1372 KB |
subtask1_09.txt |
AC |
35 ms |
1564 KB |
subtask1_10.txt |
AC |
28 ms |
928 KB |
subtask1_11.txt |
AC |
30 ms |
1056 KB |
subtask1_12.txt |
AC |
35 ms |
1440 KB |
subtask1_13.txt |
AC |
27 ms |
1052 KB |
subtask1_14.txt |
AC |
27 ms |
924 KB |
subtask1_15.txt |
AC |
36 ms |
1568 KB |
subtask1_16.txt |
AC |
34 ms |
1696 KB |
subtask1_17.txt |
AC |
35 ms |
1564 KB |
subtask1_18.txt |
AC |
34 ms |
1568 KB |
subtask1_19.txt |
AC |
36 ms |
1576 KB |
subtask1_20.txt |
AC |
35 ms |
1696 KB |
subtask1_21.txt |
AC |
36 ms |
1572 KB |
subtask1_22.txt |
AC |
36 ms |
1568 KB |
subtask1_23.txt |
AC |
35 ms |
1568 KB |
subtask1_24.txt |
AC |
36 ms |
1572 KB |
subtask1_25.txt |
AC |
36 ms |
1572 KB |
subtask1_26.txt |
AC |
37 ms |
1576 KB |
subtask1_27.txt |
AC |
35 ms |
1572 KB |
subtask1_28.txt |
AC |
36 ms |
1572 KB |
subtask1_29.txt |
AC |
37 ms |
1564 KB |
subtask2_01.txt |
AC |
351 ms |
28452 KB |
subtask2_02.txt |
AC |
35 ms |
1388 KB |
subtask2_03.txt |
AC |
87 ms |
5676 KB |
subtask2_04.txt |
AC |
228 ms |
17316 KB |
subtask2_05.txt |
AC |
27 ms |
924 KB |
subtask2_06.txt |
AC |
76 ms |
4636 KB |
subtask2_07.txt |
AC |
252 ms |
19488 KB |
subtask2_08.txt |
AC |
351 ms |
28580 KB |
subtask2_09.txt |
AC |
233 ms |
17696 KB |
subtask2_10.txt |
AC |
327 ms |
26016 KB |
subtask2_11.txt |
AC |
248 ms |
19244 KB |
subtask2_12.txt |
AC |
382 ms |
31624 KB |
subtask2_13.txt |
AC |
125 ms |
8480 KB |
subtask2_14.txt |
AC |
302 ms |
23848 KB |
subtask2_15.txt |
AC |
474 ms |
38052 KB |
subtask2_16.txt |
AC |
460 ms |
38052 KB |
subtask2_17.txt |
AC |
467 ms |
38048 KB |
subtask2_18.txt |
AC |
465 ms |
38040 KB |
subtask2_19.txt |
AC |
464 ms |
37984 KB |
subtask2_20.txt |
AC |
474 ms |
38048 KB |
subtask2_21.txt |
AC |
457 ms |
38052 KB |
subtask2_22.txt |
AC |
453 ms |
38048 KB |
subtask2_23.txt |
AC |
468 ms |
37904 KB |
subtask2_24.txt |
AC |
459 ms |
38064 KB |
subtask2_25.txt |
AC |
469 ms |
38132 KB |
subtask2_26.txt |
AC |
461 ms |
38056 KB |
subtask2_27.txt |
AC |
483 ms |
37928 KB |
subtask2_28.txt |
AC |
456 ms |
38048 KB |
subtask2_29.txt |
AC |
470 ms |
38052 KB |