TopCoder SRM614(Div.1)

Posted on By 二价氢

#Div.1

##Level1 MinimumSquare

###Task

给出一个面积最小的正方形,要求严格包含至少K个给定的点

###Solution

枚举正方形左下角坐标,二分边长

###Code

class MinimumSquare{
    public:
        long long minArea(vector<int> x,vector<int> y,int K)
        {
            long long ret=0x7fffffffffff;
            long long l,d,r,u;
            long long L,R,mid;
            int cnt=x.size(),tans;
            for (int i=0;i<cnt;i++)
            {
                l=x[i]-1;u=y[i]-1;
                L=2;R=1e11;
                cerr<<l<<" "<<u<<endl;
                while (L<R)
                {
                    mid=(L+R)/2;
                    cerr<<mid<<endl;
                    r=l+mid;d=u+mid;
                    tans=0;
                    for (int j=0;j<cnt;j++)
                        if (x[j]>l && x[j]<r && y[j]>u && y[j]<d)
                            tans++;
                    if (tans>=K)
                    {
                        R=mid;
                        ret=min(ret,R);
                    }
                    else
                        L=mid+1;
                    //cerr<<tans;
                }
            }
            return ret*ret;
        }
};

##Level2

##Level3