QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#312697 | #8082. Minimum Euclidean Distance | haze | AC ✓ | 93ms | 4004kb | C++23 | 2.2kb | 2024-01-24 10:50:43 | 2024-01-24 10:50:44 |
Judging History
answer
#include<bits/stdc++.h>
#define irep(i,l,r) for(int i = l; i <= r; ++i)
#define drep(i,r,l) for(int i = r; i >= l; --i)
#define ceil(pp,qq) (((pp)>0)^((qq)>0)?-Abs(pp)/Abs(qq):(pp)%(qq)?(pp)/(qq)+1:(pp)/(qq))
#define floor(pp,qq) (((pp)>0)^((qq)>0)?-ceil(abs(pp),abs(qq)):(pp)/(qq))
#define ll long long
using namespace std;
ll Abs(ll x){return x > 0 ? x : - x;}
inline ll read(){
char ch = getchar();
ll s = 0; bool w = 0;
while(!isdigit(ch)){if(ch == '-')w = 1;ch = getchar();}
while(isdigit(ch))s = (s << 3) + (s << 1) + (ch ^ 48), ch = getchar();
return w ? - s : s;
}
const int itinf = 2e9;
const ll llinf = 4e18;
const int mod = 1000000007;
const int N = 500009;
double eps = 1e-8;
struct point{
double x, y;
point(){}
point(double xx, double yy){x = xx, y = yy;}
double operator * (const point& p){
return x * p.x + y * p.y;
}
double operator ^ (const point& p){
return x * p.y - y * p.x;
}
point operator + (const point& p){
point pp(x + p.x, y + p.y);
return pp;
}
point operator - (const point& p){
point pp(x - p.x, y - p.y);
return pp;
}
}a[N];
double len(point p){
return p.x * p.x + p.y * p.y;
}
long double dis(point p1, point p2, point p){
if((p - p2) * (p1 - p2) >= -eps && (p - p1) * (p2 - p1) >= -eps)
return pow((p1 - p) ^ (p2 - p), 2 ) / len(p1 - p2);
else return min(len(p - p1), len(p - p2));
}
int main(){
// point s1(1,1),s2(1,-1),g(1,0);
// cerr << dis(s1,s2,g) << endl;
int n = read(), q = read();
irep(i,1,n){
int x = read(), y = read();
point temp(x,y);
a[i] = temp;
}
a[n + 1] = a[1];
while(q --){
double x1, y1, x2, y2;
scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);
point c(0.5 * (x1 + x2), 0.5 * (y1 + y2));
double r = 0.125 * ((y2 - y1) * (y2 - y1) + (x2 - x1) * (x2 - x1));
bool fl = 0;
// cerr << c.x << ' ' <<c.y << endl;
for(int i = 1; i <= n; ++i){
// cerr << ((a[i + 1] - a[i]) ^ (c - a[i])) << endl;
if(((a[i + 1] - a[i]) ^ (c - a[i])) < -eps){
fl = 1;
break;
}
}
if(fl == 0){
printf("%0.12lf\n", r);
continue;
}
long double ans = 1e24;
for(int i = 1; i <= n; ++i){
ans = min(dis(a[i],a[i+1],c),ans);// cerr << dis(a[i],a[i+1],c) << ' ';
}
//cerr << endl;
printf("%0.12Lf\n", r + ans);
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3848kb
input:
4 3 0 0 1 0 1 1 0 1 0 0 1 1 1 1 2 2 1 1 2 3
output:
0.250000000000 0.750000000000 1.875000000000
result:
ok Your answer is acceptable!^ ^
Test #2:
score: 0
Accepted
time: 0ms
memory: 3780kb
input:
48 10 -30 0 -29 -4 -28 -7 -27 -9 -25 -12 -22 -16 -21 -17 -17 -20 -14 -22 -12 -23 -9 -24 -5 -25 -4 -25 0 -24 3 -23 5 -22 8 -20 12 -17 13 -16 16 -12 18 -9 19 -7 20 -4 21 0 21 1 20 5 19 8 18 10 16 13 13 17 12 18 8 21 5 23 3 24 0 25 -4 26 -5 26 -9 25 -12 24 -14 23 -17 21 -21 18 -22 17 -25 13 -27 10 -28 ...
output:
589.500000000000 51.470588235294 1051.250000000000 66.625000000000 174.125000000000 562.675000000000 272.394230769231 287.385000000000 689.625000000000 436.250000000000
result:
ok Your answer is acceptable!^ ^
Test #3:
score: 0
Accepted
time: 82ms
memory: 3936kb
input:
5000 5000 -50000000 0 -49999885 -49450 -49999770 -85675 -49999604 -122394 -49999391 -157604 -49999130 -192731 -49998803 -229143 -49998399 -267196 -49997956 -303872 -49997469 -339362 -49996891 -377221 -49996257 -414903 -49995577 -451819 -49994843 -488600 -49994059 -524941 -49993173 -563137 -49992252 ...
output:
2214785369560632.875000000000 1632645104370924.375000000000 3954739966640761.250000000000 5405105667896787.000000000000 817274719687553.031250000000 902260846427661.062500000000 3194363161448624.000000000000 1619744446324385.000000000000 363457485421825.250000000000 4776425533214308.500000000000 826...
result:
ok Your answer is acceptable!^ ^
Test #4:
score: 0
Accepted
time: 40ms
memory: 3880kb
input:
2224 5000 -500000 0 -499999 -30 -499998 -59 -499997 -87 -499996 -114 -499995 -140 -499994 -165 -499993 -189 -499992 -212 -499991 -234 -499990 -255 -499989 -275 -499988 -294 -499987 -312 -499986 -329 -499985 -345 -499984 -360 -499982 -389 -499981 -403 -499979 -430 -499978 -443 -499976 -468 -499975 -4...
output:
931340796015.375000000000 410570465847.750000000000 225774975043.750000000000 686588110927.375000000000 803635163394.875000000000 440321806244.750000000000 781364862674.500000000000 303496624306.750000000000 146653887864.750000000000 1361017661096.750000000000 409649028457.500000000000 417747460932....
result:
ok Your answer is acceptable!^ ^
Test #5:
score: 0
Accepted
time: 47ms
memory: 3936kb
input:
4672 5000 -300 0 -299 -43 -298 -85 -297 -126 -296 -166 -295 -205 -294 -243 -293 -280 -292 -316 -291 -351 -290 -385 -289 -418 -288 -450 -287 -481 -286 -511 -285 -540 -284 -568 -283 -595 -282 -621 -281 -646 -280 -670 -279 -693 -278 -715 -276 -758 -275 -779 -273 -820 -272 -840 -270 -879 -269 -898 -267 ...
output:
356616.500000000000 121018.500000000000 0.250000000000 189.625000000000 103099.625000000000 83253.125000000000 131701.250000000000 58352.500000000000 355863.125000000000 197638.859724047306 605772.412162162189 2062.445897740785 113763.250000000000 134694.500000000000 74679.652054794526 114481.250000...
result:
ok Your answer is acceptable!^ ^
Test #6:
score: 0
Accepted
time: 7ms
memory: 3940kb
input:
576 5000 -300 0 -299 -15 -298 -29 -297 -42 -296 -54 -295 -65 -294 -75 -293 -84 -292 -92 -290 -107 -289 -114 -287 -127 -286 -133 -284 -144 -283 -149 -280 -163 -278 -172 -275 -185 -274 -189 -270 -204 -267 -215 -265 -222 -262 -232 -258 -245 -257 -248 -252 -262 -248 -273 -245 -281 -240 -294 -238 -299 -2...
output:
189295.250000000000 377943.294416243647 299473.000000000000 243821.917197452218 559270.992227979237 100367.592339667463 472743.125000000000 374450.625000000000 77260.625000000000 106891.230769230770 193578.125000000000 98895.065414507771 124020.000000000000 296138.875000000000 1209.125000000000 4800...
result:
ok Your answer is acceptable!^ ^
Test #7:
score: 0
Accepted
time: 6ms
memory: 3856kb
input:
336 5000 -300 0 -299 -11 -298 -21 -297 -30 -296 -38 -295 -45 -294 -51 -292 -62 -291 -67 -289 -76 -288 -80 -285 -91 -283 -98 -280 -108 -279 -111 -275 -122 -272 -130 -270 -135 -267 -142 -263 -151 -258 -162 -257 -164 -251 -175 -246 -184 -242 -191 -239 -196 -234 -204 -227 -215 -225 -218 -218 -228 -213 -...
output:
478.125000000000 408.125000000000 1341.250000000000 861.250000000000 4210.000000000000 1709.125000000000 846.250000000000 1389.125000000000 722.500000000000 753.125000000000 574.250000000000 1167.125000000000 439.625000000000 5650.250000000000 619.625000000000 2664.500000000000 2138.625000000000 213...
result:
ok Your answer is acceptable!^ ^
Test #8:
score: 0
Accepted
time: 7ms
memory: 3868kb
input:
336 5000 -300 0 -299 -11 -298 -21 -297 -30 -296 -38 -295 -45 -294 -51 -292 -62 -291 -67 -289 -76 -288 -80 -285 -91 -283 -98 -280 -108 -279 -111 -275 -122 -272 -130 -270 -135 -267 -142 -263 -151 -258 -162 -257 -164 -251 -175 -246 -184 -242 -191 -239 -196 -234 -204 -227 -215 -225 -218 -218 -228 -213 -...
output:
95.125000000000 8382.625000000000 77361.125000000000 142408.125000000000 98056.250000000000 110581.250000000000 20413.000000000000 1253.125000000000 64468.625000000000 8915.625000000000 93179.125000000000 26286.250000000000 35118.250000000000 129681.250000000000 59545.625000000000 49997.910377358494...
result:
ok Your answer is acceptable!^ ^
Test #9:
score: 0
Accepted
time: 93ms
memory: 3952kb
input:
5000 5000 -50000000 0 -49999912 -33572 -49999824 -59400 -49999710 -83347 -49999578 -105149 -49999382 -130924 -49999166 -154591 -49998916 -178069 -49998599 -203894 -49998262 -228398 -49997905 -251647 -49997466 -277451 -49997003 -302413 -49996511 -326907 -49995964 -352128 -49995393 -376671 -49994795 -...
output:
481990667522174080.000000000000 900047257776891969.625000000000 84250235108292082.000000000000 357963472278544288.000000000000 758024710210129317.125000000000 651805790712522720.000000000000 422072215223185888.000000000000 571948904059660656.000000000000 685946954834849936.000000000000 7810175274046...
result:
ok Your answer is acceptable!^ ^
Test #10:
score: 0
Accepted
time: 93ms
memory: 4004kb
input:
5000 5000 -50000000 0 -49999762 -138397 -49999461 -244153 -49999007 -349713 -49998392 -456086 -49997577 -566637 -49996632 -673023 -49995462 -784273 -49994137 -894156 -49992625 -1005080 -49990945 -1115094 -49989066 -1226720 -49987021 -1337531 -49984788 -1449227 -49982415 -1559155 -49979887 -1668061 -...
output:
259053256470500480.000000000000 472297859897907104.000000000000 271976522374482752.000000000000 930648882061705984.000000000000 110596174224097024.625000000000 385963660067947072.000000000000 441658538323234880.000000000000 259108189662189408.000000000000 379723545376251040.000000000000 432939510223...
result:
ok Your answer is acceptable!^ ^
Extra Test:
score: 0
Extra Test Passed