そーすにっき

なんかいろいろのせておくばしょ

AOJ2501

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2501

解法:商と余のマンハッタン距離を求める 

計算量:O(N)

サンプルを見ればなんとなく分かるだろうか。

図が丁寧に書かれているのが分かりやすい。

但し入力の数字をそれぞれ-1しないと余りがw=4の時の出力が合わない。(それを注視したケースもある)

#include <iostream>
#include <cmath>
using namespace std;

int main(){
  int n,a,b,c,d,p,q,res=10000;
  cin >> n >> a >> b >> c >> d;
  a--;b--;c--;d--;
  for(int w=1;w<=n;w++){
    p = abs(a/w-b/w) + abs(a%w-b%w);
    q = abs(c/w-d/w) + abs(c%w-d%w);
    //cout << p <<" " << q << endl;;
    res = min(res,p+q);
  }
  cout << res << endl;
}