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

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

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

Codeforces Round #283 (Div. 2)

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

A. Minimum Difficulty

ざっくりと大意

・ロッククライミングでn箇所のつかむトコがある。
・i番目のは地面から\(a_i\)の高さであり、難易度は\(a_{i+1}\)-\(a_i\)で決まる。
・最初と最後以外の何処かの\(a_i\)を除いて、計算される最大値を最小にしたい。

方針のようなもの

n=int(raw_input())
a=map(int,raw_input().split())
ans=1001
x=n-2
i=1
while x:
    x-=1
    p=0
    l=a[:]
    l.pop(i)
    for j in xrange(n-2):
        p=max(p,l[j+1]-l[j])
    ans=min(ans,p)
    i+=1
print ans

ぬー、、結構時間かかる書き方だと思ってたけど全然早く終わった。nが最大で100なのでどれを取り除くかが98パターン*端から端まで隣との差を求めるとかなので計算量は気にしてたほど多くなかった。

B. Secret Combination

ざっくりと大意

・579という数があった時にボタン1を押すと各桁それぞれに1が加算されて680になる。ボタン2を押すと右にズレて068になる。この操作を行って得られる最小の数はいくつか??