Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Lasha Bukhnikashvili
- #include<iostream>
- #include<stdio.h>
- #include<math.h>
- #include<iomanip>
- #include<algorithm>
- #include<vector>
- #include<map>
- #include<queue>
- #include<string>
- #define Pi 3.14159265358
- #define mod9 %1000000009
- #define INF 1000000000
- #define mod7 1000000007
- #define LL long long
- #define time clock()/(double)CLOCKS_PER_SEC
- using namespace std;
- long long m,lx,p,q,rx,mid,n,ra,i,j;
- long double l,r,ind,ans,c[3000001],x[3000001];
- int main(){
- cin>>m>>n>>ra;
- for (i=1;i<=m;i++)
- cin>>c[i];
- for (i=1;i<=n;i++)
- cin>>x[i];
- ind=c[1];
- for (i=1;i<=n;i++){
- l=x[i]-sqrt(ra*ra-1); r=x[i]+sqrt(ra*ra+1);
- lx=1; rx=m;
- while (lx<rx){
- mid=(lx+rx)/2;
- if (c[mid]<l) lx=mid+1; else rx=mid;
- };
- p=lx;
- lx=1; rx=m;
- while (lx<rx){
- if (rx-lx==1){
- if (c[rx]<=r) lx=rx; else rx=lx;
- break;
- };
- mid=(lx+rx)/2;
- if (c[mid]<=r) lx=mid; else rx=mid-1;
- };
- q=lx;
- if (ind>=c[p] && ind<=c[q]) continue;
- if (ind<c[p]) ans+=c[p]-ind,ind=c[p];
- else ans+=ind-c[q],ind=c[q];
- };
- cout<<fixed<<setprecision(1)<<ans;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement