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
AC × 3
AC × 18
WA × 29
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