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

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

Codeforces Round #397 by Kaspersky Lab and Barcelona Bootcamp (Div.1 + Div.2 combined)

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

A. Neverending competitions

ざっくりと大意

・Jinotegaの移動の履歴の情報がn件与えられるのでJinotegaの現在の場所がhome(入力2行目)か、contest(home以外の移動先)かを調べる。

Python3

print(['home','contest'][int(input())%2])

最初は移動パターンとか全部調べるの面倒すぎだと思ったしA問題でやることじゃないだろ?と思って問題文をよく読んだら「Jinotega has only flown from his hometown to a snooker contest and back,」 ってことで移動はhome<->contestしかないようです。そうすると履歴の件数が偶数ならhome、奇数ならcontestに定まる(はず)だろうと推定してなんとかAC。

B. Code obfuscation

ざっくりと大意

・難読化の為に変数名を順に1字でa,b,c…で置き換える。抜き出した複数の変数のSが難読化調整後のものかどうか。
・サンプル1は最初にaが使われて以降に順番にb,二度目のa、cとなっているので調整後。サンプル2はaから使われていないので調整後ではない。

Python3

n=input()
s=[int(i) for i in range(ord('a'),ord('z')+1)]
s=s[::-1]
for i in n:
    a=ord(i)
    if len(s)==0:
        break
    elif a==s[-1]:
        s.pop()
    elif a>s[-1]:
        print('NO')
        exit()
print('YES')

文字列Sの先頭からaから順or既に使われた文字になっているかを調べる。提出1回目は全体の文字列長でチェック用のリストが空になったあとを考慮不足で無駄にRE。s=[]にaからzまでのをチェック用で用意して、入力の文字列Sと突き合わせる。Sとチェック用のが等しければ順に使われた新たな文字でチェック用のを1つ除く、より小さければ既に使われていて2回目以降の出現で問題なし、より大きければ順番を無視して使われたのでNOになる。

C. Table Tennis Game 2

ざっくりと大意

・MishaとVanyaは卓球をしていて勝利条件はkポイント先取だった。
・全てのゲームが終わった後のMishaの総得点がaで、Vanyaの総得点がbだった時に最大で何セットプレイしていたか。1セットも成立していなければ-1となる。

Python3

k,a,b=map(int,input().split())
print(-1 if (a<k and b<k) or (max(a,b)%k>0 and min(a,b)<k) else a//k+b//k)

無駄にWAした。場合分け?を慎重にすればすんなりAC出来るものだと思う。多分。a,b共に勝利条件のk未満なら成立セットなしで-1、a,bどちらかのみがk未満でもう一方のk以上の側のスコアがkで割り切れない場合も成立してないセットがあることになるので-1、それ以外はa,bそれぞれをkで割った数を合わせれば消化セット数になると思う。なお、ゲーム数が最大になるうんぬんは11-0か0-11でセット重ねて最終セットだけが勝ち側11と負け側が端数ということにすればa//k+b//kで最大数のセットをプレイできると思う。