コード例 #1
0
ファイル: 536-C.cpp プロジェクト: a00012025/Online_Judge_Code
void convex_hull(poly &v,poly &p)
{
    p.clear() ;
    sort(v.begin(),v.end()) ;
    v.resize(unique(v.begin(),v.end())-v.begin()) ;
    int n=v.size() ;
    int sz=0 ;
    for(int i=0;i<n;i++)
    {
        while(sz>=2 && dcmp(cross(st[sz-2],st[sz-1],v[i]))<0)
            sz-- ;
        st[sz++]=v[i] ;
    }
    for(int i=0;i<sz;i++) p.push_back(st[i]) ;

    sz=0 ;
    for(int i=0;i<n;i++)
    {
        while(sz>=2 && dcmp(cross(st[sz-2],st[sz-1],v[i])>0))
            sz-- ;
        st[sz++]=v[i] ;
    }
    for(int i=sz-1;i>=0;i--)
    {
        if(i==sz-1 && st[i]==p.back()) continue ;
        if(i==0 && st[i]==p[0]) continue ;
        p.push_back(st[i]) ;
    }
}
コード例 #2
0
ファイル: b.cpp プロジェクト: tzupengwang/PECaveros
void read( poly& pp , string ss , LL mod ){
  pp.clear();
  if( ss[ 0 ] != '-' ) ss = '+' + ss;
  size_t st = 0;
  while( st < ss.length() ){
    size_t lst = st;
    st ++;
    while( st < ss.length() and
           ss[ st ] != '+' and
           ss[ st ] != '-' ) st ++;
    pp.push_back( parse( ss , lst , st , mod ) );
  }
}
コード例 #3
0
ファイル: Deer_proof_fence_4450.cpp プロジェクト: jdumas/acm
int main(void) {
	int x, y, i, k = 0;
	point p;
	while (1) {
		cin >> n >> m;
		if (n == 0 && m == 0) break;
		saplings.clear();
		for (i = 0; i < n; ++i) {
			cin >> x >> y;
			p = point(x,y);
			saplings.push_back(p);
		}
		printf("Case %d: length = %.2f\n", ++k, solve());
	}
	return 0;
}