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

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

Codeforces Beta Round #28 (Codeforces format)

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

A. Bender Problem

implementation

ざっくりと大意(全く解読できておりません)

・誕生日プレゼントに釘?
・棒を曲げて絵を作る?
・釘を頂点にして図形になる?
・Polylineは座標軸(x,y)?と平行に違いない?交差も許す?
・曲げる器具は棒をとり、90度の角度を形成する任意の場所に、それを正確に一度折り重ねることができます。
・その後、彼は、ある占有されていない爪に折り目の場所を付けて、隣接した爪へのこの棒の2つの終了を付けることができます。
・それ(どちらもない、によって、それは終了です、および、折り目場所によって)に付けられた棒がない場合、爪は、占有されていないと考えられます。
・2度棒を使用することができませんでした。それは棒をすべて使用するようには要求されません。

方針のようなもの

・・・なるほどわからん

問題文が解読できず、処理も不明ながら問題数消化を優先のためにパクリで。

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import time
import sys, io
import re, math
start = time.clock()
(n,m)=map(int, raw_input().split())
x,y=[],[]
for _ in range(n):
#やはりこの入力は座標x,yってことでいいのかな
    (xx,yy)=map(int, raw_input().split())
    x.append(xx)
    y.append(yy)
a=[]
#absで座標間の長さ?を絶対値で計算?
for i in range(n):
    a.append(abs(x[i]-x[i-1])+abs(y[i]-y[i-1])+abs(x[i]-x[(i+1)%n])+abs(y[i]-y[(i+1)%n]))

b=map(int, raw_input().split())

flg=False
for s in range(2):
    u=m*[0]
    ans=n*[-2]
    for i in range(s,n,2):
        j=0
        while j<m and not (b[j]==a[i] and not u[j]):
            j+=1
        if j==m:
            ans=None
            break
        ans[i]=j
        u[j]=True
    if ans is not None:
        flg=True
        print 'YES'
        print ' '.join(map(lambda x: str(x+1), ans))
        break
if not flg:
    print 'NO'