Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std ;
- #define M 500000
- #define pii pair<int , int >
- #define mp make_pair
- #define pf printf
- #define sf scanf
- #define sf1(a ) scanf("%d",&a)
- #define pb push_back
- #define sf2(a, b) scanf("%d%d",&a ,&b)
- #define rep(i,n) for(i = 0 ; i< n ;i++ )
- struct _node{
- double x, y;
- int vis;
- };
- struct _gnode{
- double x, y;
- };
- struct _edge{
- int u ;
- double dis;
- };
- vector<_node> node;
- vector<_gnode> gnode;
- vector<_edge> edge;
- bool comp(_edge p , _edge q){
- return p.dis < q.dis;
- }
- int make(int _u , double vs , double s ){
- int ret ;
- int i ,j ,k ;
- edge.clear();
- for(i = 0 ; i< node.size() ;i++)
- {
- if(node[i].vis != -1){
- _edge v ;
- v.dis = sqrt((node[i].x-gnode[_u].x)*(node[i].x-gnode[_u].x)
- +(node[i].y-gnode[_u].y)*(node[i].y-gnode[_u].y));
- v.u = i ;
- edge.push_back(v);
- }
- }
- int flag = 0 ;
- sort(edge.begin() , edge.end() , comp);
- for(i = 0 ;i < edge.size() ; i++)
- {
- double time ;
- time =(double)edge[i].dis/ vs;
- if(time < s || (time- s<= .0000001 && s- time <= .0000001) ){
- flag = 1;
- node[edge[i].u].vis = -1 ;
- break;
- }
- }
- if(flag == 0) ret = 1;
- else ret = 0;
- return ret ;
- }
- int main(){
- // freopen("in.txt","r",stdin);
- // freopen("out.txt","w",stdout);
- int n , m ,s , v ;
- while(scanf("%d%d%d%d",&n,&m,&s,&v)== 4){
- gnode.clear();
- node.clear();
- edge.clear();
- while(n--){
- _gnode v ;
- double _x , _y;
- scanf("%lf%lf",&_x, &_y);
- v.x = _x;
- v.y = _y;
- gnode.push_back(v );
- }
- while(m--){
- _node v ;
- double _x , _y ;
- scanf("%lf%lf",&_x ,&_y);
- v.x = _x ;
- v.y = _y;
- v.vis = 1;
- node.push_back(v );
- }
- int i, j,k = 0 ;
- for(i = 0 ;i< gnode.size() ; i++){
- k += make(i , s,v);
- }
- printf("%d\n",k);
- }
- return 0 ;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement