AtCoder Beginner Contest #010 C - 浮気調査
問題
http://abc010.contest.atcoder.jp/tasks/abc010_3解法
一人の女の子だけ訪れて目的地に向かうと考えて全通り試した。誤差死が怖かったが通った。
EPSを足した方が安全である。
コード
#include <map> #include <set> #include <list> #include <cmath> #include <queue> #include <stack> #include <cstdio> #include <string> #include <vector> #include <complex> #include <cstdlib> #include <cstring> #include <numeric> #include <sstream> #include <iostream> #include <algorithm> #include <functional> #define mp make_pair #define pb push_back #define all(x) (x).begin(),(x).end() #define rep(i,n) for(int i=0;i<(n);i++) using namespace std; typedef long long ll; typedef unsigned long long ull; typedef vector<bool> vb; typedef vector<int> vi; typedef vector<vb> vvb; typedef vector<vi> vvi; typedef pair<int,int> pii; const int INF=1<<29; const double EPS=1e-9; const int dx[]={1,0,-1,0},dy[]={0,-1,0,1}; int main(){ int sx,sy,tx,ty,T,V; cin>>sx>>sy>>tx>>ty>>T>>V; int n; int x,y; vector<pii> data; cin>>n; for(int i = 0;i < n;i++){ cin>>x>>y; data.push_back(mp(x,y)); } bool flag =false; for(int i = 0;i < data.size();i++){ double sum1 =sqrt((data[i].first - sx)*(data[i].first - sx) + (data[i].second - sy)*(data[i].second - sy)); double sum2 =sqrt((data[i].first - tx)*(data[i].first - tx) +(data[i].second - ty)*(data[i].second - ty)); int walk = T*V; // cout <<"sum = "<<sum1+sum2<<endl; if(walk >=sum1 + sum2){ flag =true; break; } } if(flag){ cout <<"YES"<<endl; }else{ cout <<"NO"<<endl; } return 0; }