AtCoder Grand Contest 020

はい。
https://atcoder.jp/contests/agc020

A - Move and Win

PyPy3

n,a,b=map(int,input().split())
print("Borys" if (a-b)%2 else "Alice")

Drawになるケースはないはずです。AliceとBorysのマス間が奇数なら、B-Aが偶数ならAliceの勝ち。サンプル1は _2_4 でマス間は1で奇数、4-2で2は偶数でAliceの勝ち。Borysはその反対の時が勝ち。なので差分の偶奇を見れば大丈夫だと思います。

B - Ice Rink Game

PyPy3

k=int(input())
a=[int(i) for i in input().split()]
l=2
r=3
for i in range(k-1,-1,-1):
    l=(l+a[i]-1)//a[i]*a[i]
    r=(r+a[i]-1)//a[i]*a[i]
if l==r:
    print(-1)
else:
    print(l,r-1)

初期値を最少人数lの2人と最大人数rの3人を用意します。数列を反対から見ていきます。 l=(l+a[i]-1)//a[i]*a[i] などして値を更新していきます。作成不能になるような場合はl,rが同数になります。最後にl,r-1を出力します。証明はありません。