UVA10308

来源:互联网 发布:python网络爬虫源码 编辑:程序博客网 时间:2024/05/16 08:47
struct Line{       double _left ;       double _right ;       Line(){}       Line(double l , double r):_left(l) , _right(r){}       friend bool operator < (const Line& a , const Line& b){            if(a._left != b._left) return a._left < b._left ;            else  return a._right > b._right ;       }};double L , W  ;int n  ;vector<Line> g ;int  DP(){     sort(g.begin() , g.end()) ;     int k = 0 ;     if(g[0]._left > 0)  return -1 ;     double _right = 0 , next_right = 0 ;     int idx = 0 ;     while(idx < g.size()){          int i = idx ;          while(i < g.size() && g[i]._left<= _right){                next_right = max(next_right , g[i]._right) ;                i++ ;          }          if(i == idx) return -1 ;          _right = next_right ;          idx = i ;          k++ ;          if(_right >= L) return k ;     }     return -1 ;}int  main(){     int i  ;     double x , y , r ;     while(cin>>n>>L>>W){          g.clear() ;          for(i = 0 ; i < n ; i++){              scanf("%lf%lf" ,&x , &r) ;              if(r > W/2){                  double d = sqrt(r*r - W*W/4) ;                  g.push_back(Line(x - d , x + d)) ;              }          }          cout<< DP() << endl ;     }     return 0 ;}

0 0