/*
プログラミングのお題スレ Part13
//mevius.5ch.net/test/read.cgi/tech/1549160513/675
675 名前:デフォルトの名無しさん[sage] 投稿日:2019/03/14(木) 18:59:16.90 ID:38t26SL0
お題: 3つの数の最小値を1回の分岐で決めろ!
*/
class Ideone
{
public static void main
(String[] args
) {
System.
out.
println(min
(1,
2,
3)); System.
out.
println(min
(1,
3,
2)); System.
out.
println(min
(2,
1,
3)); System.
out.
println(min
(2,
3,
1)); System.
out.
println(min
(3,
1,
2)); System.
out.
println(min
(3,
2,
1));
// あうとー
}
static int min(int a, int b, int c)
{
a ^= (a ^ b) * ((long) b - a >>> 63);
a ^= (a ^ c) * ((long) c - a >>> 63);
return a;
}
static int min_error(int a, int b, int c)
{
a ^= (a ^ b) * (b - a >>> 31);
a ^= (a ^ c) * (c - a >>> 31);
return a;
}
}
LyoK44OX44Ot44Kw44Op44Of44Oz44Kw44Gu44GK6aGM44K544OsIFBhcnQxMyAKLy9tZXZpdXMuNWNoLm5ldC90ZXN0L3JlYWQuY2dpL3RlY2gvMTU0OTE2MDUxMy82NzUKCjY3NSDlkI3liY3vvJrjg4fjg5Xjgqnjg6vjg4jjga7lkI3nhKHjgZfjgZXjgpNbc2FnZV0g5oqV56i/5pel77yaMjAxOS8wMy8xNCjmnKgpIDE4OjU5OjE2LjkwIElEOjM4dDI2U0wwCuOBiumhjO+8muOAgO+8k+OBpOOBruaVsOOBruacgOWwj+WApOOCku+8keWbnuOBruWIhuWykOOBp+axuuOCgeOCje+8gQoqLwpjbGFzcyBJZGVvbmUKewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykKICAgIHsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obWluKDEsIDIsIDMpKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obWluKDEsIDMsIDIpKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obWluKDIsIDEsIDMpKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obWluKDIsIDMsIDEpKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obWluKDMsIDEsIDIpKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obWluKDMsIDIsIDEpKTsKCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CiAgICAgICAgCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG1pbihJbnRlZ2VyLk1JTl9WQUxVRSwgMCwgSW50ZWdlci5NQVhfVkFMVUUpKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obWluKEludGVnZXIuTUlOX1ZBTFVFLCBJbnRlZ2VyLk1BWF9WQUxVRSwgMCkpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihtaW4oMCwgSW50ZWdlci5NSU5fVkFMVUUsIEludGVnZXIuTUFYX1ZBTFVFKSk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG1pbigwLCBJbnRlZ2VyLk1BWF9WQUxVRSwgSW50ZWdlci5NSU5fVkFMVUUpKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obWluKEludGVnZXIuTUFYX1ZBTFVFLCBJbnRlZ2VyLk1JTl9WQUxVRSwgMCkpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihtaW4oSW50ZWdlci5NQVhfVkFMVUUsIDAsIEludGVnZXIuTUlOX1ZBTFVFKSk7CiAgICAgICAgCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CiAgICAgICAgCiAgICAgICAgLy8g44GC44GG44Go44O8CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG1pbl9lcnJvcihJbnRlZ2VyLk1JTl9WQUxVRSwgMCwgSW50ZWdlci5NQVhfVkFMVUUpKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obWluX2Vycm9yKEludGVnZXIuTUlOX1ZBTFVFLCBJbnRlZ2VyLk1BWF9WQUxVRSwgMCkpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihtaW5fZXJyb3IoMCwgSW50ZWdlci5NSU5fVkFMVUUsIEludGVnZXIuTUFYX1ZBTFVFKSk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG1pbl9lcnJvcigwLCBJbnRlZ2VyLk1BWF9WQUxVRSwgSW50ZWdlci5NSU5fVkFMVUUpKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obWluX2Vycm9yKEludGVnZXIuTUFYX1ZBTFVFLCBJbnRlZ2VyLk1JTl9WQUxVRSwgMCkpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihtaW5fZXJyb3IoSW50ZWdlci5NQVhfVkFMVUUsIDAsIEludGVnZXIuTUlOX1ZBTFVFKSk7CiAgICB9CiAgICAKICAgIHN0YXRpYyBpbnQgbWluKGludCBhLCBpbnQgYiwgaW50IGMpCiAgICB7CiAgICAgICAgYSBePSAoYSBeIGIpICogKChsb25nKSBiIC0gYSA+Pj4gNjMpOwogICAgICAgIGEgXj0gKGEgXiBjKSAqICgobG9uZykgYyAtIGEgPj4+IDYzKTsKICAgICAgICByZXR1cm4gYTsKICAgIH0KICAgIAogICAgc3RhdGljIGludCBtaW5fZXJyb3IoaW50IGEsIGludCBiLCBpbnQgYykKICAgIHsKICAgICAgICBhIF49IChhIF4gYikgKiAoYiAtIGEgPj4+IDMxKTsKICAgICAgICBhIF49IChhIF4gYykgKiAoYyAtIGEgPj4+IDMxKTsKICAgICAgICByZXR1cm4gYTsKICAgIH0KfQ==