Submission #1752977
Source Code Expand
#include<stdio.h>
#include<math.h>
#include<algorithm>
#include<queue>
#include<deque>
#include<string>
#include<string.h>
#include<vector>
#include<set>
#include<map>
#include<stdlib.h>
#include<cassert>
using namespace std;
const long long mod=1000000009;
const long long inf=mod*mod;
const long long d2=500000004;
const double EPS=1e-10;
const double PI=acos(-1.0);
int ABS(int a){return max(a,-a);}
long long ABS(long long a){return max(a,-a);}
int p[210000];
int q[210000];
pair<int,int>z[210000];
int segtree[524288];
int query(int a,int b,int c,int d,int e){
if(d<a||b<c)return -mod;
if(c<=a&&b<=d)return segtree[e];
return max(query(a,(a+b)/2,c,d,e*2),query((a+b)/2+1,b,c,d,e*2+1));
}
void update(int a,int b){
a+=262144;
while(a){
segtree[a]=max(segtree[a],b);
a/=2;
}
}
int main(){
int X0,X1,Y0,Y1;
scanf("%d%d%d%d",&X0,&Y0,&X1,&Y1);
int a;scanf("%d",&a);
int sz=0;
for(int i=0;i<a;i++){
int x,y;scanf("%d%d",&x,&y);
if(x<min(X0,X1)||x>max(X0,X1)||y<min(Y0,Y1)||y>max(Y0,Y1))continue;
z[sz]=make_pair(x,y);
p[sz]=x;
q[sz++]=y;
}
long double ret=0;
std::sort(z,z+sz);
if(X0==X1){
ret=100.0*ABS(Y0-Y1);
ret+=sz*(10*PI-20);
}else if(Y0==Y1){
ret=100.0*ABS(X0-X1);
ret+=sz*(10*PI-20);
}else{
if(X0>X1){
swap(X0,X1);
swap(Y0,Y1);
}
std::sort(q,q+sz);
int val=0;
if(Y0<Y1){
for(int i=0;i<sz;i++){
int at=lower_bound(q,q+sz,z[i].second)-q;
int tmp=query(0,262143,0,at,1)+1;
val=max(val,tmp);
update(at,tmp);
}
}else{
for(int i=0;i<sz;i++){
int at=lower_bound(q,q+sz,z[i].second)-q;
int tmp=query(0,262143,at,sz-1,1)+1;
val=max(val,tmp);
update(at,tmp);
}
}
if(val>min(ABS(Y0-Y1),ABS(X0-X1))){
ret+=(10*PI-20);val--;
}
ret+=100.0*(ABS(Y0-Y1)+ABS(X0-X1));
ret-=val*20.0;
ret+=val*5*PI;
}
printf("%.18Lf\n",ret);
}
Submission Info
Submission Time
2017-11-08 16:33:22+0900
Task
C - Fountain Walk
User
tozangezan
Language
C++14 (GCC 5.4.1)
Score
900
Code Size
1922 Byte
Status
AC
Exec Time
142 ms
Memory
4992 KB
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:39:35: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d%d%d",&X0,&Y0,&X1,&Y1);
^
./Main.cpp:40:22: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
int a;scanf("%d",&a);
^
./Main.cpp:43:30: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
int x,y;scanf("%d%d",&x,&y);
^
Judge Result
Set Name
Sample
All
Score / Max Score
0 / 0
900 / 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
2304 KB
sample_02.txt
AC
1 ms
128 KB
sample_03.txt
AC
1 ms
2176 KB
subtask_1_01.txt
AC
1 ms
2304 KB
subtask_1_02.txt
AC
1 ms
2304 KB
subtask_1_03.txt
AC
1 ms
2304 KB
subtask_1_04.txt
AC
1 ms
2304 KB
subtask_1_05.txt
AC
1 ms
128 KB
subtask_1_06.txt
AC
1 ms
128 KB
subtask_1_07.txt
AC
1 ms
128 KB
subtask_1_08.txt
AC
1 ms
128 KB
subtask_1_09.txt
AC
14 ms
2176 KB
subtask_1_10.txt
AC
29 ms
2304 KB
subtask_1_11.txt
AC
8 ms
2304 KB
subtask_1_12.txt
AC
114 ms
4992 KB
subtask_1_13.txt
AC
31 ms
2176 KB
subtask_1_14.txt
AC
15 ms
2304 KB
subtask_1_15.txt
AC
7 ms
2304 KB
subtask_1_16.txt
AC
114 ms
4992 KB
subtask_1_17.txt
AC
25 ms
2304 KB
subtask_1_18.txt
AC
20 ms
2304 KB
subtask_1_19.txt
AC
20 ms
2304 KB
subtask_1_20.txt
AC
112 ms
4992 KB
subtask_1_21.txt
AC
114 ms
4992 KB
subtask_1_22.txt
AC
126 ms
4992 KB
subtask_1_23.txt
AC
126 ms
4992 KB
subtask_1_24.txt
AC
1 ms
128 KB
subtask_1_25.txt
AC
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
AC
38 ms
2304 KB
subtask_1_29.txt
AC
42 ms
2304 KB
subtask_1_30.txt
AC
142 ms
4992 KB
subtask_1_31.txt
AC
87 ms
4992 KB
subtask_1_32.txt
AC
88 ms
4992 KB
subtask_1_33.txt
AC
88 ms
4992 KB
subtask_1_34.txt
AC
97 ms
4992 KB
subtask_1_35.txt
AC
98 ms
4992 KB
subtask_1_36.txt
AC
130 ms
4992 KB
subtask_1_37.txt
AC
99 ms
4992 KB
subtask_1_38.txt
AC
92 ms
4992 KB
subtask_1_39.txt
AC
103 ms
4992 KB
subtask_1_40.txt
AC
93 ms
4992 KB
subtask_1_41.txt
AC
93 ms
4992 KB