結果
問題 |
No.3108 Luke or Bishop
|
ユーザー |
|
提出日時 | 2025-04-19 08:45:59 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 6,251 bytes |
コンパイル時間 | 5,872 ms |
コンパイル使用メモリ | 301,112 KB |
実行使用メモリ | 7,844 KB |
最終ジャッジ日時 | 2025-04-19 08:46:07 |
合計ジャッジ時間 | 7,354 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 26 |
ソースコード
#if !__INCLUDE_LEVEL__ #include __FILE__ int main(){ Init(); ll gx,gy; cin >> gx >> gy; if(gx == 0 && gy == 0) cout << 0 << endl; elif(gx == 0 || gy == 0 || abs(gx) == abs(gy)) cout << 1 << endl; else cout << 2 << endl; } #else #pragma GCC optimize("Ofast,unroll-loops,no-stack-protector,fast-math") #include <bits/stdc++.h> /* #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> */ #include <atcoder/all> /* #include <boost/multiprecision/cpp_dec_float.hpp> #include <boost/multiprecision/cpp_int.hpp> */ using namespace std; //using namespace __gnu_pbds; using namespace atcoder; //namespace mp = boost::multiprecision; //using bint = mp::cpp_int; //using Real = mp::number<mp::cpp_dec_float<1024>>;//場合に応じて小さく struct Init { Init() { ios::sync_with_stdio(0); cin.tie(0); cout << fixed << setprecision(13);} }init; using ll = long long; using ull = unsigned long long; using ld = long double; using pii = pair<int,int>; using pll = pair<ll,ll>; using P = complex<ld>; using mint = modint; ll mod=1000000007; void setmod(ll x){mint::set_mod(x); mod = x;} template<class T> using pq = std::priority_queue<T>; template<class T> using pqg = std::priority_queue<T, vector<T>, greater<T>>; //template <class T> using pbds = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; #define overload4(_1,_2,_3,_4,name,...) name #define overload3(_1,_2,_3,name,...) name #define OVERLOAD5(a, b, c, d, e, ...) e #define REP1_0(b, c) REP1_1(b, c) #define REP1_1(b, c) \ for (ll REP_COUNTER_##c = 0; REP_COUNTER_##c < (ll)(b); ++REP_COUNTER_##c) #define REP1(b) REP1_0(b, __COUNTER__) #define REP2(i, b) for (ll i = 0; i < (ll)(b); ++i) #define REP3(i, a, b) for (ll i = (ll)(a); i < (ll)(b); ++i) #define REP4(i, a, b, c) for (ll i = (ll)(a); i < (ll)(b); i += (ll)(c)) #define rep(...) OVERLOAD5(__VA_ARGS__, REP4, REP3, REP2, REP1)(__VA_ARGS__) #define RREP2(i, a) for (ll i = (ll)(a)-1; i >= 0; --i) #define RREP3(i, a, b) for (ll i = (ll)(b)-1; i >= (ll)(a); --i) #define RREP4(i, a, b, c) for (ll i = (ll)(b)-1; i >= (ll)(a); i -= (ll)(c)) #define rrep(...) OVERLOAD5(__VA_ARGS__, RREP4, RREP3, RREP2)(__VA_ARGS__) #define REPS2(i, b) for (ll i = 1; i <= (ll)(b); ++i) #define REPS3(i, a, b) for (ll i = (ll)(a) + 1; i <= (ll)(b); ++i) #define REPS4(i, a, b, c) for (ll i = (ll)(a) + 1; i <= (ll)(b); i += (ll)(c)) #define reps(...) OVERLOAD5(__VA_ARGS__, REPS4, REPS3, REPS2)(__VA_ARGS__) #define RREPS2(i, a) for (ll i = (ll)(a); i > 0; --i) #define RREPS3(i, a, b) for (ll i = (ll)(b); i > (ll)(a); --i) #define RREPS4(i, a, b, c) for (ll i = (ll)(b); i > (ll)(a); i -= (ll)(c)) #define rreps(...) OVERLOAD5(__VA_ARGS__, RREPS4, RREPS3, RREPS2)(__VA_ARGS__) #define fore1(i,a) for(auto&&i:a) #define fore2(x,y,a) for(auto&&[x,y]:a) #define fore3(x,y,z,a) for(auto&&[x,y,z]:a) #define fore(...) overload4(__VA_ARGS__,fore3,fore2,fore1)(__VA_ARGS__) #define elif else if #define sz(a) (ll)(a).size() //サイズを返す #define all1(i) begin(i),end(i) #define all2(i,a) begin(i),begin(i)+a #define all3(i,a,b) begin(i)+a,begin(i)+b #define all(...) overload3(__VA_ARGS__,all3,all2,all1)(__VA_ARGS__)//allのオーバーロード #define rall1(i) (i).rbegin(),(i).rend() #define rall2(i,k) (i).rbegin(),(i).rbegin()+k #define rall3(i,a,b) (i).rbegin()+a,(i).rbegin()+b #define rall(...) overload3(__VA_ARGS__,rall3,rall2,rall1)(__VA_ARGS__)//rallのオーバーロード #define el endl //改行 #define spa " " //スペース #define eps (1e-10) //小さい数 #define equals(a,b) (fabs((a) - (b)) < eps ) //二つの数が同じか(誤差を許容) #define pb push_back//push_back省略 #define pf push_front//push_front省略 #define mkp make_pair//make_pair省略 #define ft first//first省略 #define sd second//second省略 #define bit(n) (1ull<<(n))//2^n #define bc(var, lower, upper) ((var)>=lower and (var)<upper)//binary_check[lower,upper) #define Yes(b) ((b)?"Yes":"No")//Yes:No簡略 #define YES(b) ((b)?"YES":"NO")//YES:NO簡略 const double pi = 3.141592653589793238; //円周率 const ll inf = ((1LL<<62)-(1LL<<31)); //inf const string ABC = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //ABC大文字 const string abc = "abcdefghijklmnopqrstuvwxyz"; //ABC小文字 const int dx[] = {1, 0, -1, 0}; // → ↓ ← ↑ const int dy[] = {0, 1, 0, -1}; // → ↓ ← ↑ template<class... T> constexpr auto max(T... a){return max(initializer_list<common_type_t<T...>>{a...});}//maxの複数をそのまま template<typename T> inline bool chmax(T &a, T b) { return ((a < b) ? (a = b, true) : (false)); } template<class... T> constexpr auto min(T... a){return min(initializer_list<common_type_t<T...>>{a...});}//minの複数をそのまま template<typename T> inline bool chmin(T &a, T b) { return ((a > b) ? (a = b, true) : (false)); } template <typename T> inline T ceil(T a,T b) {return (a+(b-1))/b;}//天井関数 template <typename T> inline T floor(T a,T b) {return a/b;}//床関数 ll intpow(ll a, ll b){ ll ans = 1; while(b){ if(b & 1) ans *= a; a *= a; b /= 2; } return ans; }//累乗 ll modpow(ll a, ll b, ll p){ ll ans = 1; while(b){ if(b & 1) (ans *= a) %= p; (a *= a) %= p; b /= 2; } return ans; }//modpow ll floor_sqrt(ll n){if(n==0)return 0;ll m1=sqrt(n)-1;return m1*(m1+2)<n?m1+1:m1;} vector<pll> factor(ull x){vector<pll>ans;for(ull i=2;i*i<=x;i++)if(x%i==0){ans.push_back({i,1});while((x/=i)%i==0)ans.back().second++;}if(x!=1)ans.push_back({x,1});return ans;}//素因数分解(vector) map<ll,ll> factor_map(ull x){map<ll,ll>ans;for(ull i=2;i*i<=x;i++)if(x%i==0){ans[i]=1;while((x/=i)%i==0)ans[i]++;}if(x!=1)ans[x]= 1;return ans;}//素因数分解(map) vector<ll> divisor(ull x){vector<ll>ans;for(ull i=1;i*i<= x;i++)if(x%i==0)ans.push_back(i);ll t=ans.size();rrep(i,t)ans.push_back(x/ans[i]);return ans;}//約数(vector) ll rsws(vector<ll> &v,ll l,ll r){if(r==l)return 0; ll ret=v[r-1];ret-=(l==0?0:v[l-1]);return ret;}//rsw ll rrsws(vector<vector<ll>> &v,ll x1,ll y1,ll x2,ll y2){ll ret=v[x2][y2];if(x1)ret-=v[x1-1][y2];if(y1)ret-=v[x2][y1-1];if(x1&&y1)ret+=v[x1-1][y1-1];return ret;}//rrsw mt19937_64 rng(time(0));//rng() でint_64で乱数を取得template<typename T1, typename T2> #endif