Codeforces Round #390 (Div.2)
はい。
http://codeforces.com/contest/754
A. Lesha and array splitting
ざっくりと大意
・長さnの数列aをいくつかに分割して、いずれの部分の和も0でないようにすることができるか。
Python3
n=int(input()) a=[int(i) for i in input().split()] if a.count(0)==n: print('NO') elif sum(a)!=0: print('YES',1,sep='\n') print(1,n) else: print('YES',2,sep='\n') for i in range(1,n): if sum(a[:i]): print(1,i) print(i+1,n) break
数列a内に0しかなかったらNOになる。数列aの総和が0ではなかったらそのまま出力する。数列aの総和が0の場合は先頭から分割できる箇所を探して和が0でなくなる部分があれば、そこで2箇所に区切るのが解になる。
B. Ilya and tic-tac-toe game
ざっくりと大意
・4 * 4の盤面でまるばつゲームをする。xの番で1つxをつけて勝つことができるかどうか。
Python3
l=[] for i in range(4): l.append(input()) ans=0 a=b=c=d='' for i in range(4): for j in range(4): if j<2: a=l[i][j]+l[i][j+1]+l[i][j+2] if i<2: b=l[i][j]+l[i+1][j]+l[i+2][j] if i<2 and j<2: c=l[i][j]+l[i+1][j+1]+l[i+2][j+2] if i<2 and j>1: d=l[i][j]+l[i+1][j-1]+l[i+2][j-2] for k in (a,b,c,d): if k.count('.')==1 and k.count('x')==2: ans=1 print('YES' if ans else 'NO')
端から端まで枠外にならない3連並びで縦横と斜めは2パターンで、'x'が2つと'.‘が1つの箇所があれば勝てる並びがあることになる。コンテストの時、初見時はoooがあって既に負けているパターンを対策したけどそういうのはないことが保証されていたらしい。