QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#309789#8030. Traveling in the Grid WorldPetroTarnavskyi#WA 935ms3920kbC++201.2kb2024-01-20 20:46:172024-01-20 20:46:17

Judging History

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

  • [2024-01-20 20:46:17]
  • 评测
  • 测评结果:WA
  • 用时:935ms
  • 内存:3920kb
  • [2024-01-20 20:46:17]
  • 提交

answer

#include <bits/stdc++.h>

using namespace std;

#define FOR(i, a, b) for(int i = (a); i < (b); i++)
#define RFOR(i, a, b) for(int i = (a) - 1; i >= (b); i--)
#define SZ(a) int(a.size())
#define ALL(a) a.begin(), a.end()
#define PB push_back
#define MP make_pair
#define F first
#define S second

typedef long long LL;
typedef vector<int> VI;
typedef pair<int, int> PII;
typedef double db;



db d(int i, int j)
{
	return sqrt(i * i + j * j);
}

void check(int n, int m, int i, int j, db& ans)
{
	if(i == 0 && j == 0)
		return;
	if(i == n && j == m)
		return;
	if(gcd(i, j) != 1 || gcd(n - i, m - j) != 1)
		return;
	
	if((0 - i) * (j - m) == (i - n) * (0 - j))
		return;
	ans = min(ans, d(i, j) + d(n - i, m - j));
	
}

void solve()
{
	int n, m;
	cin >> n >> m;
	if(n < m)
		swap(n, m);
	
	db ans = 1e9;
	if(gcd(n, m) == 1)
		ans = d(n, m);
	
	FOR(x, 0, n + 1)
	{
		int My = (m * x) / n;
		
		FOR(y, max(0, My - 7), min(m, My + 7) + 1)
			check(n, m, x, y, ans);
	}
	cout << ans << "\n";
}




int main()
{
	ios::sync_with_stdio(0); 
	cin.tie(0);
	cout << fixed << setprecision(15);
	
	int t;
	cin >> t;
	while(t--)
		solve();
	
	
	
	
	
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 3808kb

input:

2
2 2
2 3

output:

3.236067977499790
3.605551275463989

result:

ok 2 numbers

Test #2:

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

input:

225
1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
2 1
2 2
2 3
2 4
2 5
2 6
2 7
2 8
2 9
2 10
2 11
2 12
2 13
2 14
2 15
3 1
3 2
3 3
3 4
3 5
3 6
3 7
3 8
3 9
3 10
3 11
3 12
3 13
3 14
3 15
4 1
4 2
4 3
4 4
4 5
4 6
4 7
4 8
4 9
4 10
4 11
4 12
4 13
4 14
4 15
5 1
5 2
5 3
5 4
5 5
5 6
5 7
5 8
...

output:

1.414213562373095
2.236067977499790
3.162277660168380
4.123105625617661
5.099019513592784
6.082762530298219
7.071067811865476
8.062257748298549
9.055385138137417
10.049875621120890
11.045361017187261
12.041594578792296
13.038404810405298
14.035668847618199
15.033296378372908
2.236067977499790
3.2360...

result:

ok 225 numbers

Test #3:

score: 0
Accepted
time: 371ms
memory: 3808kb

input:

6000
119 101
13 90
96 3
20 99
42 79
57 22
78 138
42 157
179 93
195 12
24 195
62 129
31 166
128 9
46 118
123 113
99 128
187 45
154 84
24 109
143 91
96 100
146 168
115 98
176 36
99 70
198 174
119 33
130 92
184 9
56 196
6 118
136 166
150 118
178 43
105 47
36 4
132 162
171 53
37 180
11 171
77 67
199 51
...

output:

156.083311087380508
90.934042030473933
96.046886075716060
101.000000000000000
89.470665583754325
61.098281481560512
158.518156028175156
162.520767903674397
201.717624415914628
195.368884346966837
196.471374493754354
143.125818774950602
168.869772309907489
128.316016147634514
126.649125933847046
167....

result:

ok 6000 numbers

Test #4:

score: 0
Accepted
time: 626ms
memory: 3920kb

input:

1400
231 870
23 319
363 117
561 492
841 470
849 886
2 611
921 397
227 916
669 867
874 371
533 16
841 789
782 469
367 291
778 136
694 120
593 89
22 575
6 44
180 871
661 554
397 860
265 547
521 412
809 804
6 554
272 867
240 695
408 900
917 926
47 747
748 750
321 151
291 114
330 31
543 194
387 432
144 ...

output:

900.144988346139598
319.828078817354594
381.389564951911780
746.180273168174381
963.421506922074059
1227.109204594277344
611.003273313654176
1002.920734654538933
943.708111653174228
1095.102734920367084
949.482490623181548
533.240096016794269
1153.170412384917199
911.857993330101863
468.369512244338...

result:

ok 1400 numbers

Test #5:

score: 0
Accepted
time: 888ms
memory: 3908kb

input:

140
3868 307
1542 8425
7856 1284
8129 8657
773 3877
3073 1195
9579 2327
4058 1337
7080 2717
4183 8192
6189 9162
4094 9648
8098 864
5240 9869
6891 8861
9787 7768
321 97
3839 1384
3271 461
1031 8399
7425 278
6201 2581
2426 9301
3153 6278
3317 9760
34 6044
328 9027
9636 6166
8786 9001
9148 1501
6941 61...

output:

3880.164042923958732
8564.951196591840926
7960.238187391192696
11875.364836500959427
3953.309752599712283
3297.173638133120676
9857.594534165016739
4272.579197627587746
7583.435171477369295
9198.171176924248357
11056.489723234961275
10480.684137974971236
8143.960952755131984
11173.842714124804843
11...

result:

ok 140 numbers

Test #6:

score: -100
Wrong Answer
time: 935ms
memory: 3812kb

input:

15
92173 34960
85436 79002
67020 16430
77956 88069
10526 52318
63416 18293
13873 21386
41723 31777
89639 91343
48769 44631
41406 14388
52543 19309
89807 68272
22189 65756
16037 54219

output:

33161.480690227472223
-nan
3500.289662954830874
-nan
-nan
614.630836333866910
25491.589299217888765
-nan
44705.498116688162554
-nan
43834.591135312301049
-nan
-nan
4175.684181166898270
-nan

result:

wrong answer 1st numbers differ - expected: '98580.2390391', found: '33161.4806902', error = '0.6636092'