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'