Submission #4625968


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
 
typedef pair<int,int > pp;
typedef long long ll;
 
#define sz(x) (int)x.size() 
int const N=3e5+10,oo=1e9;
ll const OO=2e18;
double const eps=1e-8,PI=acos(-1);
int mod=oo+7;

struct circle{
    int x,y,r;
    circle(){};
    circle(int x,int y,int r):x(x),y(y),r(r){}
};

int n;
int a,b,c,d;
circle all[1001];
priority_queue<pair<double,int > > q;
double cost[1001];
bool vis[1001];
double dist(pp a,pp b){
    return sqrt((a.first-b.first)*1LL*(a.first-b.first)+
        (a.second-b.second)*1LL*(a.second-b.second));
}
double distc(int i,int j){
    double dd=dist({all[i].x,all[i].y},{all[j].x,all[j].y});
    dd+=-all[i].r-all[j].r;
    if(dd<0)dd=0;
    return dd;
}
int main(){
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin>>a>>b>>c>>d;
  cin>>n;
  for(int i=0;i<n;i++){
      cost[i]=OO;
      int x,y,r;
      cin>>x>>y>>r;
      all[i]=circle(x,y,r);
  }
  double mn=dist({a,b},{c,d});
  for(int i=0;i<n;i++){
      double dd=dist({a,b},{all[i].x,all[i].y});
      if(dd<=all[i].r){
          q.push({0,i});
          cost[i]=0;
      }else {
          dd-=all[i].r;
          q.push({-dd,i});
          cost[i]=dd;
      }
  }
  while(!q.empty()){
      auto cur=q.top();q.pop();
      double d=-cur.first;
      int idx=cur.second;
      if(vis[idx])continue;
      vis[idx]=1;
      for(int i=0;i<n;i++){
          if(i==idx)continue;
          double need=distc(idx,i);
          if(!vis[i]&&cost[i]>need+d){
              cost[i]=need+d;
              q.push({-cost[i],i});
          }
      }
  }
  for(int i=0;i<n;i++)mn=min(mn,max(0.0,dist({c,d},{all[i].x,all[i].y})-all[i].r)+cost[i]);
  cout<<fixed<<setprecision(10)<<mn<<'\n';
  return 0;
}

Submission Info

Submission Time
Task E - Cosmic Rays
User abo_od303
Language C++14 (GCC 5.4.1)
Score 600
Code Size 1785 Byte
Status AC
Exec Time 96 ms
Memory 6256 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 3
AC × 49
Set Name Test Cases
Sample 0_00.txt, 0_01.txt, 0_02.txt
All 0_00.txt, 0_01.txt, 0_02.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 1_15.txt, 1_16.txt, 1_17.txt, 1_18.txt, 1_19.txt, 1_20.txt, 1_21.txt, 1_22.txt, 1_23.txt, 1_24.txt, 1_25.txt, 1_26.txt, 1_27.txt, 1_28.txt, 1_29.txt, 1_30.txt, 1_31.txt, 1_32.txt, 1_33.txt, 1_34.txt, 1_35.txt, 1_36.txt, 1_37.txt, 1_38.txt, 1_39.txt, 1_40.txt, 1_41.txt, 1_42.txt, 1_43.txt, 1_44.txt, 1_45.txt
Case Name Status Exec Time Memory
0_00.txt AC 1 ms 256 KB
0_01.txt AC 1 ms 256 KB
0_02.txt AC 1 ms 256 KB
1_00.txt AC 1 ms 256 KB
1_01.txt AC 1 ms 256 KB
1_02.txt AC 12 ms 892 KB
1_03.txt AC 12 ms 892 KB
1_04.txt AC 10 ms 640 KB
1_05.txt AC 12 ms 892 KB
1_06.txt AC 9 ms 384 KB
1_07.txt AC 9 ms 512 KB
1_08.txt AC 12 ms 892 KB
1_09.txt AC 12 ms 640 KB
1_10.txt AC 9 ms 512 KB
1_11.txt AC 11 ms 640 KB
1_12.txt AC 10 ms 640 KB
1_13.txt AC 9 ms 384 KB
1_14.txt AC 13 ms 892 KB
1_15.txt AC 14 ms 892 KB
1_16.txt AC 12 ms 640 KB
1_17.txt AC 13 ms 892 KB
1_18.txt AC 13 ms 892 KB
1_19.txt AC 13 ms 892 KB
1_20.txt AC 9 ms 384 KB
1_21.txt AC 10 ms 640 KB
1_22.txt AC 13 ms 892 KB
1_23.txt AC 12 ms 892 KB
1_24.txt AC 13 ms 892 KB
1_25.txt AC 11 ms 640 KB
1_26.txt AC 14 ms 892 KB
1_27.txt AC 12 ms 892 KB
1_28.txt AC 13 ms 892 KB
1_29.txt AC 12 ms 892 KB
1_30.txt AC 9 ms 384 KB
1_31.txt AC 9 ms 512 KB
1_32.txt AC 12 ms 640 KB
1_33.txt AC 12 ms 640 KB
1_34.txt AC 9 ms 256 KB
1_35.txt AC 9 ms 256 KB
1_36.txt AC 9 ms 256 KB
1_37.txt AC 9 ms 256 KB
1_38.txt AC 95 ms 6000 KB
1_39.txt AC 95 ms 5488 KB
1_40.txt AC 93 ms 4848 KB
1_41.txt AC 96 ms 6256 KB
1_42.txt AC 10 ms 640 KB
1_43.txt AC 12 ms 892 KB
1_44.txt AC 11 ms 892 KB
1_45.txt AC 14 ms 1400 KB