SRM 423 DIV1 Easy - TheTower x

問題


http://community.topcoder.com/stat?c=problem_statement&pm=9976&rd=13514

(x、y)の点がN個与えられる。
この点を1個~N個までそれぞれ同じ位置にあるよう移動させるときの、
それぞれの最小移動数を求める。

解き方


各点の移動距離が最小となるx、y座標は、
与えられたx、y座標のいずれかになる。

よって、与えられたx、y座標のすべてを始点としたときの
移動距離が最小のものを更新していって求める。

コード


class TheTower {

public: vector<int> count(vector<int> x, vector<int> y) {
int n=x.size();
vector<int> ans(n,1e+9);

FORE(i,0,n)FORE(j,0,n){
vector<int> vx;
FORE(k,0,n)vx.push_back(abs(x[i]-x[k])+abs(y[j]-y[k]));
sort(all(vx));
int sum=0;
FORE(k,0,n){
sum+=vx[k];
ans[k]=min(ans[k],sum);
}
}

return ans;
}

};

Share this

Related Posts

Previous
Next Post »