君はまるで砂漠に咲く、一輪の花。

僕はその花に引き寄せられる蝶。

Codeforces Round #137 (Div.2)

はい。
http://codeforces.com/contest/222

A. Shooshuns and Sequence

ざっくりと大意

・n個並んだ数列が与えられる。
・k番目のと同じ数を末尾に付け足す。
・そしたら先頭の数を消す。
・数列が全て同じ数になるのが何手目か。

Python2

n,k=map(int,raw_input().split())
l=[int(x) for x in raw_input().split()]
if len(set(l[k-1:]))!=1:
    print -1
    exit()
ans=chk=k-1
for i in range(k-2,-1,-1):
    if l[i]==l[k-1]:
        ans-=1
    else:
        break
print ans

よく考察せずに解説読んだ。 k番目から末尾までが同じ数でないと手順を繰り返しても数列が全て同じ数になることはない。のに気づくのがポイント?だと思う。k番目から末尾までが同じ数だったならば、とりあえずは手数をkとする。k番目から先頭まで辿ろうとしてk番目と同じ数ならば1手減らす。違う数なら探索終了をしたものが解になると思う。

B. Cosmic Tables

ざっくりと大意

・n * mの表があり、k件のクエリを処理する。
・cなら列をswap、rなら行をswap、gならその座標の数を出力する。

Python2

n,m,k=map(int,raw_input().split())
l=[]
x={i:i for i in range(n)}
y={i:i for i in range(m)}
for i in range(n):
    l.append(raw_input().split())
for i in range(k):
    a,b,c=map(str,raw_input().split())
    b=int(b)
    c=int(c)
    if a=='g':
        print l[x[b-1]][y[c-1]]
    elif a=='r':
        x[b-1],x[c-1]=x[c-1],x[b-1]
    else:
        y[b-1],y[c-1]=y[c-1],y[b-1]

TLE解決できず。。