Start: Jul, 03, 2019 08:38:00
2019年度暑期短学期第七天 助教场
End: Jul, 04, 2019 23:00:00
Time elapsed:
Time remaining:

Problem_ID: F
Result: Accepted
Time: 3ms
Memory: 1772kB
Author: 2017212212207
In contest: 1292

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<queue>
#include<cmath>
#include<string>
using namespace std;
typedef long long LL;
typedef unsigned long long ull;
const int inf = 0x3f3f3f3f;
const LL infll = 0x3f3f3f3f3f3f3f3f;
const LL mod = 1e9 + 7;
const double eps = 1e-8;
const double pi = acos(-1.0);
const int maxn = 1e5 + 5;
const int maxm = 1.5e7 + 5;
using namespace std;
bool cmp(double a, double b)
{
	return a > b;
}
int main()
{
	int T, n;
	double x, y;
	double r[105], f[105];
	scanf("%d", &T);
	while (T--)
	{
		int cnt = 0, ans = 0;
		scanf("%lf %lf %d", &x, &y, &n);
		double t = y / 2.0;
		for (int i = 1;i <= n;i++)
		{
			scanf("%lf", &r[i]);
			if (r[i] <= t)
			{
				cnt++;
				f[i] = 0;
				continue;
			}
			double tmp = sqrt(r[i] * r[i] - t*t);
			f[i] = 2.0*tmp;
		}
		if (cnt == n)
		{
			printf("-1\n");
			continue;
		}
		sort(f + 1, f + 1 + n, cmp);
		for (int i = 1;i <= n;i++)
		{
			if (f[i] == 0 || x <= 0)break;
			x -= f[i];
			ans++;
		}
		if (x > 0)printf("-1\n");
		else printf("%d\n", ans);
	}
	return 0;
}