QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#187156#3854. RadarSuiseiseki#WA 235ms10192kbC++142.7kb2023-09-24 15:00:432023-09-24 15:00:43

Judging History

你现在查看的是最新测评结果

  • [2023-09-24 15:00:43]
  • 评测
  • 测评结果:WA
  • 用时:235ms
  • 内存:10192kb
  • [2023-09-24 15:00:43]
  • 提交

answer

#include <bits/stdc++.h>

using namespace std;

using ll = long long;
using db = long double;

const int mxn = 1e5 + 5;

struct Point
{
	int x, y;
	Point(): x(), y() {}
	Point(int _x, int _y): x(_x), y(_y) {}
	
	ll dot(const Point &oth) const
	{
		return 1LL * x * oth.x + 1LL * y * oth.y;
	}
	
	ll det(const Point &oth) const
	{
		return 1LL * x * oth.y - 1LL * y * oth.x;
	}
	
	int type() const
	{
		if (x >= 0 && y > 0) return 1;
		if (x < 0 && y >= 0) return 2;
		if (x <= 0 && y < 0) return 3;
		if (x > 0 && y <= 0) return 4;
		return 0;
	}
	
	friend ostream& operator << (ostream &o, const Point &p)
	{
		return o << "(" << p.x << ", " << p.y << ")";
	}
};

void chk(Point vec, db rad, Point p, db &res)
{
	db len = sqrt(1LL * vec.x * vec.x + 1LL * vec.y * vec.y);
	db x = vec.x / len, y = vec.y / len;
	x *= rad, y *= rad;
	res = min(res, sqrt((x - p.x) * (x - p.x) + (y - p.y) * (y - p.y)));
}

int R, F, n;
ll r[mxn];
int fx[mxn], fy[mxn];
int qx[mxn], qy[mxn];
Point fp[mxn], qp[mxn];
int id[mxn], idq[mxn];

bool comp_angle(const Point &a, const Point &b)
{
	if (a.type() != b.type()) return a.type() < b.type();
	return a.det(b) > 0;
}

bool comp_query(int a, int b)
{
	return comp_angle(qp[a], qp[b]);
}

int sgn(ll x)
{
	return x < 0 ? -1 : x == 0 ? 0 : +1;
}

db ans[mxn];

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cin >> R >> F >> n;
	for (int i = 0; i < R; ++ i) cin >> r[i], r[i] = r[i] * r[i];
	for (int i = 0; i < F; ++ i) cin >> fx[i] >> fy[i], fp[i] = Point(fx[i], fy[i]);
	sort(r, r + R);
	sort(fp, fp + F, comp_angle);
//	for (int i = 0; i < F; ++ i) cerr << fp[i] << " ";
//	cerr << endl;
	for (int i = 0; i < n; ++ i) cin >> qx[i] >> qy[i], qp[i] = Point(qx[i], qy[i]);
	iota(idq, idq + n, 0);
	sort(idq, idq + n, comp_query);
	int J = F - 1;
	for (int i = 0; i < n; ++ i)
	{
		int I = idq[i];
//		int J0 = (J + 1) % F;
//		if (F > 1) while (sgn(qp[I].det(fp[J])) * sgn(qp[I].det(fp[J0])) >= 0)
//		{
//			if (qp[I].det(fp[J]) == 0 && qp[I].dot(fp[J]) >= 0) break;
//			J = J0, J0 = (J + 1) % F;
//		}
		J = upper_bound(fp, fp + F, qp[I], comp_angle) - fp;
		J = (J + F - 1) % F;
//		cerr << qp[i] << "	-	" << fp[J] << " " << fp[J0] << endl;
		ans[I] = 1e18;
		for (int dt = -5; dt <= +5; ++ dt)
		{
			int J_ = ((J + dt) % F + F) % F;
			int T = lower_bound(r, r + R, (ll)((__int128)(qp[I].dot(fp[J_])) * qp[I].dot(fp[J_]) / fp[J_].dot(fp[J_]))) - r;
			for (int k = -5; k <= +5; ++ k) if (T + k >= 0 && T + k < R) chk(fp[J_], sqrt(r[T + k]), qp[I], ans[I]);
		}
	}
	cout << fixed << setprecision(15);
	for (int i = 0; i < n; ++ i) cout << ans[i] << endl;
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 7868kb

input:

3 8 4
2
4
7
1 0
2 1
0 1
-1 1
-5 -2
-5 -6
-2 -7
6 -1
-1 -1
3 1
-5 -3
8 1

output:

0.605291072916640
0.977772290465605
1.551845105401790
1.414213562373095

result:

ok 4 numbers

Test #2:

score: 0
Accepted
time: 1ms
memory: 7928kb

input:

1 8 32
7
0 1
1 0
0 -1
-1 0
1 -1
-1 1
-1 -1
1 1
20 10
10 20
-20 10
10 -20
-10 20
20 -10
-10 -20
-20 -10
2 1
1 2
-2 1
1 -2
-1 2
2 -1
-1 -2
-2 -1
5 0
0 5
-5 0
0 -5
5 5
5 -5
-5 5
-5 -5
9 0
0 9
-9 0
0 -9
9 9
9 -9
-9 9
-9 -9

output:

15.874985099257575
15.874985099257575
15.874985099257575
15.874985099257575
15.874985099257575
15.874985099257575
15.874985099257575
15.874985099257575
4.929656701045723
4.929656701045723
4.929656701045723
4.929656701045723
4.929656701045723
4.929656701045723
4.929656701045723
4.929656701045723
2.00...

result:

ok 32 numbers

Test #3:

score: 0
Accepted
time: 5ms
memory: 7884kb

input:

3 4 1681
16
8
4
-1 0
0 -1
0 1
1 0
-9 17
-4 -7
2 -13
-11 -17
15 -19
-7 1
-8 14
-8 -7
-8 20
-16 -3
12 14
-3 12
9 -5
-18 11
3 -1
2 0
-18 0
0 -19
-1 -19
18 -8
2 20
5 -8
-8 -19
-9 -16
20 -19
14 -1
3 10
-1 -4
4 10
16 17
19 -7
-17 4
1 -12
-5 -12
-5 -10
-15 -5
-10 -19
-2 -10
-4 -16
-2 4
-14 8
-17 16
4 1
16 ...

output:

9.055385138137417
4.123105625617661
3.605551275463989
11.045361017187261
15.297058540778354
1.414213562373095
8.246211251235321
7.000000000000000
8.944271909999159
3.000000000000000
12.165525060596439
5.000000000000000
5.099019513592785
11.180339887498948
1.414213562373095
2.000000000000000
2.000000...

result:

ok 1681 numbers

Test #4:

score: 0
Accepted
time: 0ms
memory: 7892kb

input:

3 4 1681
16
8
4
-1 -1
1 -1
-1 1
1 1
17 1
13 7
-13 -18
-1 18
4 -12
-9 3
5 10
-10 1
-12 -4
14 10
-18 19
0 -3
-7 3
-16 11
-15 9
16 1
-8 -12
3 1
0 -2
15 -18
-14 20
9 -19
17 12
20 5
-3 -6
12 -1
9 10
-13 -9
-20 -15
-11 6
17 -2
-10 -19
15 -8
-6 17
18 15
2 -3
18 -12
8 -3
-11 -6
19 -15
20 0
3 4
2 -16
-6 -17
...

output:

11.777372119303551
4.631593682590214
6.895656100977257
12.291422905366941
6.555964003580544
4.270304206047021
4.392536000447645
6.367825885745278
6.555964003580544
2.990316379370501
10.187520359495129
2.833626166508712
2.977064831365349
4.696779860161954
4.352239888693120
11.328455809796768
3.384030...

result:

ok 1681 numbers

Test #5:

score: 0
Accepted
time: 0ms
memory: 10192kb

input:

1 4 16
7
0 1
1 0
0 -1
-1 0
3 0
0 3
-3 0
0 -3
3 3
3 -3
-3 3
-3 -3
8 0
0 8
-8 0
0 -8
8 8
8 -8
-8 8
-8 -8

output:

4.000000000000000
4.000000000000000
4.000000000000000
4.000000000000000
5.000000000000000
5.000000000000000
5.000000000000000
5.000000000000000
1.000000000000000
1.000000000000000
1.000000000000000
1.000000000000000
8.062257748298550
8.062257748298550
8.062257748298550
8.062257748298550

result:

ok 16 numbers

Test #6:

score: 0
Accepted
time: 2ms
memory: 8052kb

input:

30 4 120
128
1
2
256
4
512
1024
2048
8
4096
32768
131072
262144
524288
8192
268167
16
536334
16384
1047
32
2095
8380
64
134083
65536
4190
67041
33520
16760
536334 0
-536335 0
0 536334
0 -536335
-1 1
-2 2
-4 4
-8 8
-16 16
-32 32
-64 64
-128 128
-256 256
-512 512
-1024 1024
-2048 2048
-4096 4096
-8192...

output:

1.000000000000000
2.000000000000000
4.000000000000000
8.000000000000000
16.000000000000000
32.000000000000000
64.000000000000000
128.000000000000000
256.000000000000000
512.000000000000000
1024.000000000000000
2048.000000000000000
4096.000000000000000
8192.000000000000000
16384.000000000000000
32768...

result:

ok 120 numbers

Test #7:

score: 0
Accepted
time: 5ms
memory: 7896kb

input:

4 4 1681
1000
1
999000
999
999000 999000
-999001 999000
999000 -999001
-999001 -999001
9 2
-17 -3
15 3
-19 -6
-6 -16
19 6
-12 -16
1 4
4 12
4 -15
-1 -17
5 7
12 13
19 -19
6 -16
-9 -19
6 -10
1 -20
18 17
-2 -20
13 -13
2 -7
13 14
-15 -7
7 -2
-3 4
-15 11
13 -15
20 -20
13 5
14 -5
13 11
20 0
-4 18
-2 -2
-18...

output:

8.393071595899558
16.453441243476639
14.475640085235757
19.043231368144237
16.182932417451168
19.043231368144237
19.010576536590187
3.305893553660572
11.763187620795244
14.667308360055634
16.295525639797088
7.617705510947693
16.692652903019119
25.870057685088936
16.182932198759698
20.084870431584898...

result:

ok 1681 numbers

Test #8:

score: 0
Accepted
time: 1ms
memory: 8080kb

input:

3 3 108
8
16
4
0 1
0 -1
-1 0
0 0
0 1
0 2
0 3
0 4
0 5
0 6
0 7
0 8
0 9
0 10
0 11
0 12
0 13
0 14
0 15
0 16
0 17
0 18
0 19
0 0
0 -1
0 -2
0 -3
0 -4
0 -5
0 -6
0 -7
0 -8
0 -9
0 -10
0 -11
0 -12
0 -13
0 -14
0 -15
0 -16
0 -17
0 -18
0 -19
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0
11 0
12 0
13 0
14 0
15 0
16...

output:

4.000000000000000
3.000000000000000
2.000000000000000
1.000000000000000
0.000000000000000
1.000000000000000
2.000000000000000
1.000000000000000
0.000000000000000
1.000000000000000
2.000000000000000
3.000000000000000
4.000000000000000
3.000000000000000
2.000000000000000
1.000000000000000
0.0000000000...

result:

ok 108 numbers

Test #9:

score: 0
Accepted
time: 0ms
memory: 7920kb

input:

3 3 1681
8
16
4
-1 0
0 1
0 -1
9 2
-17 -3
15 3
-19 -6
-6 -16
19 6
-12 -16
1 4
4 12
4 -15
-1 -17
5 7
12 13
19 -19
6 -16
-9 -19
6 -10
1 -20
18 17
-2 -20
13 -13
2 -7
13 14
-15 -7
7 -2
-3 4
-15 11
13 -15
20 -20
13 5
14 -5
13 11
20 0
-4 18
-2 -2
-18 7
6 -3
-9 -9
-8 -12
-16 20
-1 -13
14 20
-7 -14
13 -14
19...

output:

9.219544457292887
3.162277660168379
15.033296378372908
6.708203932499369
6.000000000000000
19.104973174542800
12.000000000000000
1.000000000000000
5.656854249492380
4.123105625617661
1.414213562373095
5.099019513592785
12.369316876852982
19.235384061671345
6.000000000000000
9.486832980505138
6.32455...

result:

ok 1681 numbers

Test #10:

score: 0
Accepted
time: 5ms
memory: 8084kb

input:

3 2 1681
16
8
4
0 1
0 -1
-1 -17
-18 -12
4 -6
12 17
-14 -11
-10 19
-19 -15
-15 -17
2 13
-8 -13
-18 7
-17 12
-20 16
3 12
-13 13
10 5
18 -9
-16 4
1 17
-19 -6
-17 -4
12 -18
-10 -17
-9 -20
13 6
11 0
4 5
2 -15
8 -12
1 9
17 -10
1 -13
-8 1
-12 11
5 0
20 -16
-5 8
-13 -2
7 12
-8 14
-4 9
10 -11
19 -3
-18 8
-4 ...

output:

1.414213562373095
18.439088914585775
4.472135954999579
12.041594578792295
14.317821063276353
10.440306508910550
19.026297590440448
15.033296378372908
3.605551275463989
8.544003745317531
18.027756377319946
17.464249196572981
20.000000000000000
5.000000000000000
13.341664064126334
10.049875621120890
1...

result:

ok 1681 numbers

Test #11:

score: 0
Accepted
time: 0ms
memory: 7940kb

input:

3 2 1681
16
8
4
-1 -999001
0 1
13 -1
-7 19
19 -13
17 -1
-14 14
18 -9
10 -10
11 20
6 16
-16 7
14 -7
-3 4
7 -14
-20 2
14 -6
13 16
-16 -13
2 0
-8 20
-3 20
0 14
-18 1
-15 12
-3 -12
-13 -14
14 0
12 4
-14 9
-10 -9
20 15
-20 0
19 4
16 -8
3 -14
19 -15
-11 19
6 -9
-17 -5
-17 13
18 12
6 12
-16 -10
12 7
8 -6
-...

output:

13.341667965588257
7.615773105863908
19.235399881681894
17.262680444705100
14.142135623730950
18.027764372990675
10.198046879676520
11.704699910719625
6.000000000000000
16.031219541881397
14.035676835267186
3.000000000000000
7.280125289047176
20.099751242241781
14.142139587489014
13.000000000000000
...

result:

ok 1681 numbers

Test #12:

score: 0
Accepted
time: 0ms
memory: 8140kb

input:

3 2 1
1
2
4
0 1
0 -1
-7 0

output:

7.071067811865475

result:

ok found '7.0710678', expected '7.0710678', error '0.0000000'

Test #13:

score: 0
Accepted
time: 1ms
memory: 7960kb

input:

3 2 1
1
2
4
0 1
-1 -999001
-7 0

output:

7.071066820925964

result:

ok found '7.0710668', expected '7.0710668', error '0.0000000'

Test #14:

score: 0
Accepted
time: 1ms
memory: 8052kb

input:

4 1 36
8
1
2
4
0 1
0 1
0 2
0 3
0 4
0 5
0 6
0 7
0 8
0 9
0 -1
0 -2
0 -3
0 -4
0 -5
0 -6
0 -7
0 -8
0 -9
-1 0
-2 0
-3 0
-4 0
-5 0
-6 0
-7 0
-8 0
-9 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0

output:

0.000000000000000
0.000000000000000
1.000000000000000
0.000000000000000
1.000000000000000
2.000000000000000
1.000000000000000
0.000000000000000
1.000000000000000
2.000000000000000
3.000000000000000
4.000000000000000
5.000000000000000
6.000000000000000
7.000000000000000
8.000000000000000
9.0000000000...

result:

ok 36 numbers

Test #15:

score: 0
Accepted
time: 1ms
memory: 8024kb

input:

4 5 8
8
1
2
4
0 1
1 1
1 -1
-3 2
-2 -5
-4 0
-4 -1
-4 -2
-8 -1
-8 -2
-8 -3
-8 -4
-9 -3

output:

2.318273189507441
3.147379239223551
3.043003664556540
5.601139657637513
6.294758478447102
6.553438496857290
6.086007329113080
7.480164533118013

result:

ok 8 numbers

Test #16:

score: -100
Wrong Answer
time: 235ms
memory: 10020kb

input:

99999 99999 99999
10
20
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
210
220
230
240
250
260
270
280
290
300
310
320
330
340
350
360
370
380
390
400
410
420
430
440
450
460
470
480
490
500
510
520
530
540
550
560
570
580
590
600
610
620
630
640
650
660
670
680
690
700
710
720
730...

output:

10.998865701868704
14.525423018761117
21.073102117794251
31.843189113241067
153.586804184438579
49.991391054939894
60.506629716441605
69.958130039585846
167.896288591092911
90.172561431422950
100.220151411668208
110.154852885070047
119.838138057650303
196.059902457148669
139.857713809972359
149.9038...

result:

wrong answer 5th numbers differ - expected: '115.9248950', found: '153.5868042', error = '0.3248820'