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

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

Coder-Strike 2014 - Round 2

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

A. Data Recovery

ざっくりと大意

・n回のテストを行ったがm回の\(t_i\)しか記録を取っていなかった。別途で最大値と最小値はわかっている。
・3回のテストで最大値3,最小値1で記録を取っているのが2の一件のみの場合はテストが[2,1,3]だったとしてあり得る。
・2回のテストで最大値3,最小値1で記録を取っているのが2の一件のみの場合は[1,3]のどちらかの記録しかあり得ず不正である。

方針のようなもの

・最大と最小の範囲内でかつ回数が足りるかを見れば良さそう。

n,m,i,a=map(int,raw_input().split())
t=map(int,raw_input().split())
r=[i,a]
ans=['Incorrect','Correct']
chk=1
while 1:
    if i in t:
        t.remove(i)
        m-=1
    elif a in t:
        t.remove(a)
        m-=1
    else:
        break
n-=2
if n<m:
    print ans[0]
    exit()
for x in t:
    if x not in r:
        if n>0 and i<=x<=a:
            r.append(x)
        else:
            chk=0
    n-=1
print ans[chk]

回数が足りるかを見るのがすごい面倒だった。最小値,最大値と一致したデータは取り除いて記録回数も-1して対処した。