紙コーダー未満

主に競技プログラミングについてです。Topcoder(togatogah)、Codeforces(togatoga)に参加してます。

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;
}