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

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

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

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

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

A. Reconnaissance

brute force

ざっくりと大意

・偵察兵は常に2人でペアでなければならない?
・n人の兵士でペアを作るのに差がd以下ならペア成立。
・(1,2)と(2,1)は違う組合せ扱い?

方針のようなもの

・とりあえずソートする。
・大きい方へだけ探していき差がd以内なら2を加算。dを越えたら中止。

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import time
import sys, io
import re, math
start = time.clock()
ans=0
(n,d)=map(int, raw_input().split())
l=[int(x) for x in raw_input().split()]
l.sort()
for i in range(n):
    j=i
    while 1:
        j+=1
        if j>n-1: break
        elif l[j]-l[i]>d: break
        elif l[j]-l[i]<=d: ans+=2
print ans

最初に書いた時は1つ先しか見てなかったけど2つ以上先にもd以内があり得る気がしたので書きなおした。Test3がそんなのだったので危なかった。。

B. Borze

expression parsing,implementation

ざっくりと大意

・BerlandではBorze alphabetの'.'と'-'を組合せて0〜2まで表す?
・0='.'、1='-.'、2='--'である。

方針のようなもの

・'.'の左に何も無ければ0確定、'-'が奇数個なら1確定かな?

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import time
import sys, io
import re, math
start = time.clock()
n=list(raw_input())
ans=[]
while len(n):
    if n[0]=='.':
        ans.append('0')
        del n[0]
    elif n[0]=='-':
        if n[1]=='.':
            ans.append('1')
            del n[0]
            del n[0]
        else:
            ans.append('2')
            del n[0]
            del n[0]
print ''.join(ans)

C. Flea

math

ざっくりと大意

・Berlandに生息のノミは垂直か水平にジャンプする。