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

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

Codeforces Beta Round #27 (Codeforces format, Div. 2)

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

A. Next Test

implementation,sortings

ざっくりと大意

・与えられた数列に含まれていないより最小の数を求める??

方針のようなもの

・とりあえずソートするけど、1が含まれてなければ1が最小。
・左0番目と1番目を比較して、差が2以上なら左0番目に1を足して回答。 差が1ならばdelしてforループ。遂に最後の数になってしまったら1を足して回答。

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import time
import sys, io
import re, math
start = time.clock()
n=input()
l=map(int, raw_input().split())
l.sort()
def main():
    for i in range(n):
        if l[0]==sum(l):
            print l[0]+1
            break
        elif l[0]==(l[1]-1):
            del l[0]
        else:
            print l[0]+1
            break
if __name__=='__main__':
    if min(l)!=1:
        print '1'
    else:
        print 'm'
        main()

まぁわざわざdelしなくてもforループで自然に右に見ていけるのでそれでも良かったかもしれない。
はい、まぁ一行でも出来たそうです。 313289のlyricsさん。

print min( set(range(1,input()+2))-set(map(int,raw_input().split())) ) まぁ特殊な例すぎるようなアレです。

B. Tournament

bitmasks,brute force,dfs and similar

ざっくりと大意

・より早く眠ったものが勝者の大会?引き分けは存在しない。

方針のようなもの

・解読できず勘で
・nが4だと1から4まで(4-1)回ずつ使えてるっぽい。

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import time
import sys, io
import re, math
start = time.clock()
n=int(raw_input())
x=(n*(n-1)/2)-1
l,ans=[],[]
#l=[map(int, raw_input().split()) for _ in range(n)]
for _ in range(x):
#    a=raw_input(' ')
    (a,b)=map(int, raw_input().split())
    l.append(a)
    l.append(b)
#print l
for i in range(1,n+1):
    if l.count(i)!=(n-1): ans.append(i)
    if len(ans)==2: break
print ans[0],ans[1]

WAのTest7も使ってる数は違っておらず左右が入れ違ってるだけ。 何か何かが勝ち負けで判定すべき要素があるらしい。。。問題を解読できていないまま悩んだり放置は無駄なので書き方が近かったlyricsさんをパクって提出で通す。

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import time
import sys, io
import re, math
start = time.clock()
n=int(raw_input())
x=(n*(n-1)/2)-1
win=[0 for _ in range(n+1)]
lose=[0 for _ in range(n+1)]
for _ in range(x):
#    a=raw_input(' ')
    (a,b)=map(int, raw_input().split())
    win[a]+=1
    lose[b]+=1
ans=[]
for i in range(1,n+1):
    if win[i]+lose[i]==n-2:
        ans.append(i)
    if len(ans)==2: break
#print ans[1],ans[0] if win[ans[0]]<win[ans[1]] else ans[0],ans[1]
if win[ans[0]]<win[ans[1]]: print ans[1],ans[0]
else: print  ans[0],ans[1]