[백준] 1007 벡터 매칭
#include <iostream>
#include <vector>
#include <climits>
#include <math.h>
#include <algorithm>
using namespace std;
typedef long long int ll;
int bitCount(ll x) {
	if (x == 0) return 0;
	return (x % 2) + bitCount(x / 2);
}
int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);
	int t;
	cin >> t;
	while(t--) {
		int k;
		cin >> k;
		vector<pair<ll,ll>> dots;
		for (int i = 0; i < k; ++i) {
			ll x, y;
			cin >> x >> y;
			dots.push_back({ x,y });
		}
		ll minVec = LLONG_MAX;
		for (ll set = 0; set < (1 << k) - 1; set++) {
			if (bitCount(set) != (k / 2)) continue;
			ll x = 0; ll y = 0;
			for (int i = 0; i < k; ++i) {
				if (set & (1 << i)) {
					x += dots[i].first;
					y += dots[i].second;
				}
				else {
					x -= dots[i].first;
					y -= dots[i].second;
				}
			}
			ll resultVec = (x*x) + (y*y);
			minVec = min(minVec, resultVec);
		}
		cout << fixed;
		cout.precision(7);
		cout << sqrt(double(minVec)) << "\n";
	}
	return 0;
}