読者です 読者をやめる 読者になる 読者になる

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

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

Codeforces Round #227 (Div. 2)

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

A. George and Sleep

ざっくりと大意

・1行目と2行目で時間の引き算のようなもの。2行目の方が遅い時間の場合は一日跨ぐような感じ??

方針のようなもの

・1行目のほうが大きい場合の処理を丁寧に間違えないようにする。

a=map(int,raw_input().split(':'))
b=map(int,raw_input().split(':'))
ans=[0,0]
chk=0
if a[1]>=b[1]:
    ans[1]=a[1]-b[1]
else:
    ans[1]=(60-b[1])+a[1]
    ans[0]-=1
if a[0]>=b[0]:
    ans[0]+=a[0]-b[0]
else:
    ans[0]+=(24-b[0])+a[0]
if ans[0]<0:
    ans[0]+=24
print "{0:02d}".format(ans[0])+':'+ "{0:02d}".format(ans[1])

多分1行目のほうが大きい場合の処理と10未満の場合は先頭に0付けるのを忘れなければ特に問題ないはず。

B. George and Round

ざっくりと大意

・コンテストの問題を1からm問目まで用意して、それぞれの問題の難易度は\(b_i\)である。
・開催のためには難易度がそれぞれ\(a_i\)のn問が必要である。
・難易度がa>=bであれば使いまわせるがそうでなければ新たに問題を用意する必要がある。
・最低で何問用意しなければいけないかを出力する。

方針のようなもの

・先頭から比較する。Inputの所にはっきりとa,bは昇順であることが保証されているのでsortはする必要なし。

n,m=map(int,raw_input().split())
a=map(int,raw_input().split())
b=map(int,raw_input().split())
ans=chk=s=0
for i in a:
    s=chk
    if s==m:
        break
    for j in range(s,m):
        chk+=1
        if i<=b[j]:
            n-=1
            break
print n

色々と書き方が雑で6WAで酷かった。実際のコンテスト当時はTLEして、その後の復習でも無駄な処理しているのを単純に書けるようにはなっている。。