# |
제출 시각 |
아이디 |
문제 |
언어 |
결과 |
실행 시간 |
메모리 |
585035 |
2022-06-28T09:14:43 Z |
조영욱(#8382) |
Fences (JOI18_fences) |
C++17 |
|
1 ms |
212 KB |
#include <bits/stdc++.h>
using namespace std;
int n;
long double s;
typedef pair<long double,long double> P;
P p[4];
long long ccw(P a,P b,P c) {
return a.first*b.second+b.first*c.second+c.first*a.second-a.second*b.first-b.second*c.first-c.second*a.first;
}
bool cross(P a,P b,P c,P d) {
if (ccw(a,b,c)*ccw(a,b,d)>0) {
return false;
}
if (ccw(c,d,a)*ccw(c,d,b)>0) {
return false;
}
return true;
}
long double dist(P a,P b) {
return sqrt((a.first-b.first)*(a.first-b.first)+(a.second-b.second)*(a.second-b.second));
}
int main(void) {
scanf("%d %Lf",&n,&s);
s+=0.000001;
p[0]=P(s,s);
p[1]=P(s,-s);
p[2]=P(-s,-s);
p[3]=P(-s,s);
P p1,p2;
scanf("%Lf %Lf %Lf %Lf",&p1.first,&p1.second,&p2.first,&p2.second);
long double ret=8*s;
//printf("%d\n",cross(p2,p[1],p[0],p[1]));
for(int i=0;i<4;i++) {
for(int j=0;j<4;j++) {
if (i==j) {
continue;
}
if (cross(p1,p[i],p2,p[j])) continue;
bool flag=true;
for(int k=0;k<4;k++) {
if (i!=k&&i!=(k+1)%4&&cross(p[k],p[(k+1)%4],p1,p[i])) {
flag=false;
break;
}
if (j!=k&&j!=(k+1)%4&&cross(p[k],p[(k+1)%4],p2,p[j])) {
flag=false;
break;
}
}
if (!flag) {
continue;
}
flag=false;
if (!cross(p1,p[(i+1)%4],p2,p[(j+3)%4])) {
flag=true;
}
int cnt=0;
int one=i;
int two=j;
while (one!=two) {
one=(one+(flag?1:3))%4;
cnt++;
}
//printf("%d %d %d\n",i,j,cnt);
ret=min(ret,(long double)cnt*s*2+dist(p1,p[i])+dist(p2,p[j]));
}
}
printf("%.12Lf",ret);
}
Compilation message
fences.cpp: In function 'int main()':
fences.cpp:28:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
28 | scanf("%d %Lf",&n,&s);
| ~~~~~^~~~~~~~~~~~~~~~
fences.cpp:35:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
35 | scanf("%Lf %Lf %Lf %Lf",&p1.first,&p1.second,&p2.first,&p2.second);
| ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
2 |
Correct |
0 ms |
212 KB |
Output is correct |
3 |
Correct |
0 ms |
212 KB |
Output is correct |
4 |
Correct |
0 ms |
212 KB |
Output is correct |
5 |
Correct |
0 ms |
212 KB |
Output is correct |
6 |
Incorrect |
1 ms |
212 KB |
Output isn't correct |
7 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
2 |
Correct |
0 ms |
212 KB |
Output is correct |
3 |
Correct |
0 ms |
212 KB |
Output is correct |
4 |
Correct |
0 ms |
212 KB |
Output is correct |
5 |
Correct |
0 ms |
212 KB |
Output is correct |
6 |
Incorrect |
1 ms |
212 KB |
Output isn't correct |
7 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
2 |
Correct |
0 ms |
212 KB |
Output is correct |
3 |
Correct |
0 ms |
212 KB |
Output is correct |
4 |
Correct |
0 ms |
212 KB |
Output is correct |
5 |
Correct |
0 ms |
212 KB |
Output is correct |
6 |
Incorrect |
1 ms |
212 KB |
Output isn't correct |
7 |
Halted |
0 ms |
0 KB |
- |