CSES - UKIEPC 2017 - Results
Submission details
Task:Breaking Biscuits
Sender:Hannes Ihalainen
Submission time:2017-10-31 19:17:41 +0200
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.04 sdetails
#2ACCEPTED0.04 sdetails
#3ACCEPTED0.06 sdetails
#4ACCEPTED0.04 sdetails
#5ACCEPTED0.04 sdetails
#6ACCEPTED0.04 sdetails
#7ACCEPTED0.04 sdetails
#8ACCEPTED0.04 sdetails
#9ACCEPTED0.04 sdetails
#10ACCEPTED0.05 sdetails
#11ACCEPTED0.04 sdetails
#12ACCEPTED0.04 sdetails
#13ACCEPTED0.05 sdetails
#14ACCEPTED0.04 sdetails
#15ACCEPTED0.04 sdetails
#16ACCEPTED0.04 sdetails
#17ACCEPTED0.04 sdetails
#18ACCEPTED0.04 sdetails
#19ACCEPTED0.03 sdetails

Code

#include <bits/stdc++.h>
#define F first
#define S second
using namespace std;
typedef long  double ld;
ld dot(pair<ld, ld> a, pair<ld, ld> b) {
	return a.F*b.F + a.S*b.S;
}
pair<ld, ld> miinus(pair<ld, ld> a, pair<ld, ld> b) {
	return {a.F-b.F, a.S-b.S};
}

int main() {
	int b;
	cin>>b;
	vector<pair<ld, ld> > v(b);
	for(int i = 0; i < b; ++i) {
		cin>>v[i].F>>v[i].S;
	}
	ld ans = 1e9;
	for(int i = 0; i < b; ++i) {
		for(int j = i+1; j < b; ++j) {
			auto w = miinus(v[j], v[i]);
			ld z1 = 0;
			ld z2 = 0;
			for(int k = 0; k < b; ++k) {
				auto w2 = miinus(v[k], v[i]);
				ld q = dot(w2, w)/dot(w, w);
				auto w3 = make_pair(q*w.F, q*w.S);
				auto w4 = miinus(w2, w3);
				if(dot(make_pair(w.S, -w.F), w4) >= 0) {
					z1 = max(z1, sqrt(dot(w4, w4)));
				}
				else {
					z2 = max(z2, sqrt(dot(w4, w4)));
				}
			}
			ans = min(ans, z1+z2);
		}
	}
	cout<<fixed<<setprecision(15)<<ans<<endl;
}

Test details

Test 1

Verdict: ACCEPTED

input
4
0 0
6 0
6 2
0 2

correct output
2.0

user output
2.000000000000000

Test 2

Verdict: ACCEPTED

input
4
0 0
3 0
3 3
0 3

correct output
3.0

user output
3.000000000000000

Test 3

Verdict: ACCEPTED

input
8
0 1
2 0
2 2
4 2
...

correct output
4.6

user output
4.600000000000000

Test 4

Verdict: ACCEPTED

input
7
0 1
2 0
2 2
4 2
...

correct output
4.024922359499621

user output
4.024922359499621

Test 5

Verdict: ACCEPTED

input
70
100 44
136 117
167 118
234 143
...

correct output
227.81031610693168

user output
227.810316106931656

Test 6

Verdict: ACCEPTED

input
28
76 -32
17 -40
130 -47
16 -50
...

correct output
156.43290625948828

user output
156.432906259488272

Test 7

Verdict: ACCEPTED

input
12
319 -424
310 -24
35 -24
63 -46
...

correct output
283.8531587604452

user output
283.853158760445177

Test 8

Verdict: ACCEPTED

input
24
50 -276
57 -307
73 -335
104 -372
...

correct output
129.18292647018336

user output
129.182926470183374

Test 9

Verdict: ACCEPTED

input
30
57 -251
241 -254
79 -377
254 -263
...

correct output
421.74631795869453

user output
421.746317958694559

Test 10

Verdict: ACCEPTED

input
38
49 -433
143 -436
142 -401
152 -400
...

correct output
98.79934678333767

user output
98.799346783337679

Test 11

Verdict: ACCEPTED

input
27
58 -94
58 -464
430 -459
418 -187
...

correct output
384.9352867366695

user output
384.935286736669495

Test 12

Verdict: ACCEPTED

input
14
344 -157
309 -133
273 -138
189 -154
...

correct output
217.00326712542193

user output
217.003267125421918

Test 13

Verdict: ACCEPTED

input
20
203 -129
178 -134
158 -148
135 -176
...

correct output
220.0877853308396

user output
220.087785330839614

Test 14

Verdict: ACCEPTED

input
15
127 -132
83 -323
318 -181
194 -196
...

correct output
320.4197411537199

user output
320.419741153719903

Test 15

Verdict: ACCEPTED

input
52
210 -271
311 -199
320 -124
289 -91
...

correct output
200.4494087939968

user output
200.449408793996829

Test 16

Verdict: ACCEPTED

input
13
363 -391
411 -475
374 -388
430 -475
...

correct output
84.07100591715977

user output
84.071005917159763

Test 17

Verdict: ACCEPTED

input
22
359 -99
179 -194
157 -293
187 -398
...

correct output
283.9619692846209

user output
283.961969284620929

Test 18

Verdict: ACCEPTED

input
11
106 -380
229 -333
202 -334
189 -334
...

correct output
52.97939232450616

user output
52.979392324506154

Test 19

Verdict: ACCEPTED

input
13
91 -245
201 -252
305 -232
282 -229
...

correct output
81.50653509939373

user output
81.506535099393729