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
AC × 2
AC × 31
AC × 60
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