Submission #1545882
Source Code Expand
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <cstring>
#include <queue>
#include <functional>
#include <map>
#include <set>
#define SIZE 200005
#define INF 1000000000
#define PI 3.1415926535897932384626
using namespace std;
typedef long long int ll;
typedef pair <int,int> P;
typedef long double ld;
int dp[SIZE];
int n;
double solve(vector <P> vx,int x1,int x2,int y1,int y2)
{
vector <P> vec;
for(int i=0;i<n;i++)
{
int x=vx[i].first,y=vx[i].second;
if(min(x1,x2)<=x&&x<=max(x1,x2)&&min(y1,y2)<=y&&y<=max(y1,y2))
{
vec.push_back(P(x,y));
}
}
double ret=100.0*(ll) (abs(x1-x2)+abs(y1-y2));
if(x1>x2)
{
swap(x1,x2);
swap(y1,y2);
}
if(y1>y2)
{
for(int i=0;i<vec.size();i++) vec[i].second*=-1;
y1*=-1,y2*=-1;
}
int sz=vec.size()+1;
for(int i=0;i<sz;i++) dp[i]=INF;
dp[0]=-INF;
sort(vec.begin(),vec.end());
double mn=20.0-5.0*PI;
double add=10.0*PI-20.0;
for(int i=0;i<vec.size();i++)
{
int y=vec[i].second;
int pos=lower_bound(dp,dp+sz,y)-dp;
dp[pos]=y;
}
int len=0;
for(int i=0;i<sz;i++) if(dp[i]<INF) len=i;
ret-=len*mn;
if(len==min(x2-x1,y2-y1)+1) ret+=mn+add;
return ret;
}
int main()
{
int x1,x2,y1,y2;
scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
scanf("%d",&n);
vector <P> vx;
for(int i=0;i<n;i++)
{
int x,y;
scanf("%d %d",&x,&y);
vx.push_back(P(x,y));
}
double ret=solve(vx,x1,x2,y1,y2);
printf("%.12f\n",ret);
return 0;
}
Submission Info
Submission Time |
|
Task |
C - Fountain Walk |
User |
yutaka1999 |
Language |
C++14 (GCC 5.4.1) |
Score |
900 |
Code Size |
1508 Byte |
Status |
AC |
Exec Time |
71 ms |
Memory |
6384 KB |
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:65:38: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
^
./Main.cpp:66:16: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d",&n);
^
./Main.cpp:71:23: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
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 |
256 KB |
sample_02.txt |
AC |
1 ms |
256 KB |
sample_03.txt |
AC |
1 ms |
256 KB |
subtask_1_01.txt |
AC |
1 ms |
256 KB |
subtask_1_02.txt |
AC |
1 ms |
256 KB |
subtask_1_03.txt |
AC |
1 ms |
256 KB |
subtask_1_04.txt |
AC |
1 ms |
256 KB |
subtask_1_05.txt |
AC |
1 ms |
256 KB |
subtask_1_06.txt |
AC |
1 ms |
256 KB |
subtask_1_07.txt |
AC |
1 ms |
256 KB |
subtask_1_08.txt |
AC |
1 ms |
256 KB |
subtask_1_09.txt |
AC |
15 ms |
1400 KB |
subtask_1_10.txt |
AC |
31 ms |
2672 KB |
subtask_1_11.txt |
AC |
9 ms |
892 KB |
subtask_1_12.txt |
AC |
70 ms |
6384 KB |
subtask_1_13.txt |
AC |
34 ms |
2800 KB |
subtask_1_14.txt |
AC |
16 ms |
1524 KB |
subtask_1_15.txt |
AC |
8 ms |
892 KB |
subtask_1_16.txt |
AC |
70 ms |
6384 KB |
subtask_1_17.txt |
AC |
27 ms |
2420 KB |
subtask_1_18.txt |
AC |
22 ms |
1908 KB |
subtask_1_19.txt |
AC |
22 ms |
1908 KB |
subtask_1_20.txt |
AC |
68 ms |
6384 KB |
subtask_1_21.txt |
AC |
70 ms |
6384 KB |
subtask_1_22.txt |
AC |
71 ms |
6384 KB |
subtask_1_23.txt |
AC |
70 ms |
6384 KB |
subtask_1_24.txt |
AC |
1 ms |
256 KB |
subtask_1_25.txt |
AC |
1 ms |
256 KB |
subtask_1_26.txt |
AC |
1 ms |
256 KB |
subtask_1_27.txt |
AC |
1 ms |
256 KB |
subtask_1_28.txt |
AC |
42 ms |
3568 KB |
subtask_1_29.txt |
AC |
43 ms |
3440 KB |
subtask_1_30.txt |
AC |
71 ms |
6384 KB |
subtask_1_31.txt |
AC |
47 ms |
6384 KB |
subtask_1_32.txt |
AC |
54 ms |
6384 KB |
subtask_1_33.txt |
AC |
52 ms |
6384 KB |
subtask_1_34.txt |
AC |
48 ms |
6384 KB |
subtask_1_35.txt |
AC |
58 ms |
6384 KB |
subtask_1_36.txt |
AC |
59 ms |
6384 KB |
subtask_1_37.txt |
AC |
60 ms |
6384 KB |
subtask_1_38.txt |
AC |
59 ms |
6384 KB |
subtask_1_39.txt |
AC |
58 ms |
6384 KB |
subtask_1_40.txt |
AC |
56 ms |
6384 KB |
subtask_1_41.txt |
AC |
55 ms |
6384 KB |