寝癖頭の解法

小学生の目線から、勉強中の覚え書きを投稿、更新していきます。

AtCoder Problems in C++ #C - Super Ryuma

AtCoder Beginner Contestの過去問から、その提出コードの解答例です。
AtCoderとは、コンテストを通じて、プログラミングやアルゴリズムを学習するサービスです。
atcoder.jp
プログラミングコンテストとは、「与えられた問題をいかに素早く、正確に」解くことができるかを競うものです。
競技プログラミング」を略して、「競プロ」などと呼ばれています。

#C - Super Ryuma

atcoder.jp

僕が作成、提出したコードは、以下のとおりです。

/*
AtCoder Problems in C++
#C - Super Ryuma
https://atcoder.jp/contests/abc184/tasks/abc184_c
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
ll f(ll x1,ll y1,ll x2,ll y2){
  if(x1==x2 && y1==y2){
    return 0;
  }
  if(x1==x2){
    return 1;
  }
  if(y1==y2){
    return 1;
  }
  if(max(abs(x1-x2),abs(y1-y2))<=3){
    return 1;
  }
  if(x1%2==x2%2){
    return 2;
  }
  if(y1%2==y2%2){
    return 2;
  }
  if(abs(x1-x2)<=3){
    return 2;
  }
  if(abs(y1-y2)<=3){
    return 2;
  }
  if(max(abs(x1-x2),abs(y1-y2))<=6){
    return 2;
  }else{
    return 3;
  }
}
int main(void){
  ll a,b,c,d;
  cin>>a>>b>>c>>d;
  ll x1=a+b,x2=c+d;
  ll y1=a-b,y2=c-d;
  cout<<f(x1,y1,x2,y2)<<endl;
  return 0;
}

AtCoder Beginner Contestは、オンラインジャッジによるプログラミングコンテストです。
日本語と英語に対応していて、週末ごとに実施されているみたいです。
https://practice.contest.atcoder.jp/tutorial
アカウントを登録すれば、誰でも参加できます。