Submission #2291892
Source Code Expand
#include<cstdio>
#include<algorithm>
#define pi 3.14159265358979343846
using namespace std;
struct N{
int x,y;
}s,t,f[200005];
int n,start,endd,opt[200005],k,opt_n,flag;
double ans;
bool comp(N a,N b){return a.x<b.x;}
int search(int h){
int l=1,mid,r=opt_n;
while(l<=r){
mid=(l+r)/2;
if(opt[mid]>=h)
if(mid+1<=r&&opt[mid+1]>=h) l=mid+1;
else return(mid);
else r=mid-1;
}
return r;
}
int main(){
scanf("%d%d%d%d",&s.x,&s.y,&t.x,&t.y);
scanf("%d",&n);
for(int i=1;i<=n;++i) scanf("%d%d",&f[i].x,&f[i].y);
sort(f+1,f+n+1,comp);
//for(int i=1;i<=n;++i) printf("%d %d\n",f[i].x,f[i].y);
if(s.x>t.x){
int temp=s.x;
s.x=t.x;
t.x=temp;
}
if(t.y>s.y) flag=-1;
else flag=1;
for(int i=1;i<=n;++i){
if(f[i].x>s.x&&(i-1<1||f[i-1].x<=s.x)&&flag*s.y>=flag*f[i].y&&flag*t.y<=flag*f[i].y) start=i;
if(f[i].x<t.x&&(i+1>n||f[i+1].x>=t.x)&&flag*s.y>=flag*f[i].y&&flag*t.y<=flag*f[i].y) endd=i;
}
if(start==0&&endd==0&&s.x!=t.x){
printf("%.15lf",(double)100*(t.x-s.x)+100*(-flag*(t.y-s.y)));
return 0;
}
opt[1]=flag*f[start].y; opt_n=1;
//printf("%d\n",flag);
for(int i=start+1;i<=endd;++i){
int h=flag*f[i].y;
if(flag*t.y-h>0) continue;
if(h<opt[opt_n]) k=++opt_n;
else k=search(h)+1;
//printf("%d\n",k);
opt[k]=h;
}
if(s.x==t.x){
int cnt=0;
for(int i=1;i<=n;++i)
if(f[i].x==s.x)
cnt++;
printf("%.15lf",100*(-flag*t.y-s.y)-20*cnt+10*pi*cnt);
return 0;
}
if(s.y==t.y){
int cnt=0;
for(int i=1;i<=n;++i)
if(f[i].x>s.x&&f[i].x<t.x&&f[i].y==s.y)
cnt++;
printf("%.15lf",100*(t.x-s.x)-20*cnt+10*pi*cnt);
return 0;
}
//printf("%d %d %d\n",start,end,opt_n);
printf("%.15lf",100*(t.x-s.x)+100*(-flag*(t.y-s.y))-opt_n*20+opt_n*pi*5);
}
Submission Info
Submission Time |
|
Task |
C - Fountain Walk |
User |
luogu_bot2 |
Language |
C++ (GCC 5.4.1) |
Score |
0 |
Code Size |
1799 Byte |
Status |
WA |
Exec Time |
68 ms |
Memory |
2560 KB |
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:23:39: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d%d%d",&s.x,&s.y,&t.x,&t.y);
^
./Main.cpp:24:16: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d",&n);
^
./Main.cpp:25:53: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
for(int i=1;i<=n;++i) scanf("%d%d",&f[i].x,&f[i].y);
^
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
0 / 900 |
Status |
|
|
Set Name |
Test Cases |
Sample |
sample_01.txt, sample_02.txt, sample_03.txt |
All |
sample_01.txt, sample_02.txt, sample_03.txt, sample_01.txt, sample_02.txt, sample_03.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt, subtask_1_28.txt, subtask_1_29.txt, subtask_1_30.txt, subtask_1_31.txt, subtask_1_32.txt, subtask_1_33.txt, subtask_1_34.txt, subtask_1_35.txt, subtask_1_36.txt, subtask_1_37.txt, subtask_1_38.txt, subtask_1_39.txt, subtask_1_40.txt, subtask_1_41.txt |
Case Name |
Status |
Exec Time |
Memory |
sample_01.txt |
AC |
1 ms |
128 KB |
sample_02.txt |
AC |
1 ms |
128 KB |
sample_03.txt |
AC |
1 ms |
128 KB |
subtask_1_01.txt |
AC |
1 ms |
128 KB |
subtask_1_02.txt |
AC |
1 ms |
128 KB |
subtask_1_03.txt |
AC |
1 ms |
128 KB |
subtask_1_04.txt |
AC |
1 ms |
128 KB |
subtask_1_05.txt |
AC |
1 ms |
128 KB |
subtask_1_06.txt |
WA |
1 ms |
128 KB |
subtask_1_07.txt |
AC |
1 ms |
128 KB |
subtask_1_08.txt |
WA |
1 ms |
128 KB |
subtask_1_09.txt |
WA |
20 ms |
768 KB |
subtask_1_10.txt |
WA |
42 ms |
1280 KB |
subtask_1_11.txt |
WA |
11 ms |
512 KB |
subtask_1_12.txt |
WA |
59 ms |
2560 KB |
subtask_1_13.txt |
WA |
45 ms |
1408 KB |
subtask_1_14.txt |
WA |
21 ms |
768 KB |
subtask_1_15.txt |
WA |
10 ms |
384 KB |
subtask_1_16.txt |
WA |
59 ms |
1664 KB |
subtask_1_17.txt |
WA |
37 ms |
1152 KB |
subtask_1_18.txt |
WA |
29 ms |
896 KB |
subtask_1_19.txt |
WA |
28 ms |
896 KB |
subtask_1_20.txt |
WA |
57 ms |
2560 KB |
subtask_1_21.txt |
WA |
59 ms |
2560 KB |
subtask_1_22.txt |
WA |
59 ms |
2560 KB |
subtask_1_23.txt |
WA |
60 ms |
1664 KB |
subtask_1_24.txt |
WA |
1 ms |
128 KB |
subtask_1_25.txt |
WA |
1 ms |
128 KB |
subtask_1_26.txt |
AC |
1 ms |
128 KB |
subtask_1_27.txt |
AC |
1 ms |
128 KB |
subtask_1_28.txt |
WA |
55 ms |
1664 KB |
subtask_1_29.txt |
WA |
59 ms |
1664 KB |
subtask_1_30.txt |
WA |
68 ms |
1664 KB |
subtask_1_31.txt |
AC |
45 ms |
1664 KB |
subtask_1_32.txt |
AC |
45 ms |
2560 KB |
subtask_1_33.txt |
AC |
47 ms |
2176 KB |
subtask_1_34.txt |
AC |
47 ms |
1664 KB |
subtask_1_35.txt |
WA |
58 ms |
1792 KB |
subtask_1_36.txt |
WA |
58 ms |
1664 KB |
subtask_1_37.txt |
WA |
53 ms |
2304 KB |
subtask_1_38.txt |
WA |
55 ms |
2048 KB |
subtask_1_39.txt |
WA |
56 ms |
1920 KB |
subtask_1_40.txt |
WA |
52 ms |
2048 KB |
subtask_1_41.txt |
WA |
50 ms |
2176 KB |