はい。
Codeforces Round #677 (Div. 3)
ooxox-- 1191(-60) 落ちました。 codeforcesは久しぶりなのでこんなものでしょう。
A. Boring Apartments
w=[]
n=int(input())
for i in range(1,10):
for j in range(1,5):
w.append(str(i)*j)
for i in range(n):
s=input()
cnt=0
for k in w:
cnt+=len(k)
if s==k:
print(cnt)
全部作っておきます。先頭から何番目に出現するかが解に。
B. Yet Another Bookshelf
t=int(input())
for i in range(t):
ans=f=0
n=int(input())
a=[int(i) for i in input().split()]
while a[-1]==0:
a.pop()
for i in a:
if i==1: f=1
if f==1 and i==0: ans+=1
print(ans)
1と1の間に0が何個あるか。
C. Dominant Piranha
t=int(input())
for i in range(t):
n=int(input())
l=[int(i) for i in input().split()]
if len(set(l))==1:
print(-1)
else:
x=max(l)
for j in range(n):
if l[j]==x and (l[j]>l[min(j+1,n-1)] or l[j]>l[max(0,j-1)]):
print(j+1)
break
コンテスト中はどれが隣を食って最強になれるかをシミュしてTLEです。実は全部同じ数ならダメ。そうでなければどこかの最大値の左右どちらか隣にはより小さい数があるはずです。それを食い物にすれば単独で最強になれます。解です。
D. Districts Connection
t=int(input())
for i in range(t):
n=int(input())
l=[int(i) for i in input().split()]
if len(set(l))==1:
print("NO")
else:
print("YES")
p=[0,l[0]]
for j in range(n):
if l[j]!=p[1]:
q=[j,l[j]]
break
print(1,q[0]+1)
for j in range(1,n):
if j==q[0]:
continue
if l[j]==p[1]:
print(j+1,q[0]+1)
else:
print(j+1,1)
同じ数の町同士は隣になれない、辺を張れない関係のようです。全ての町が同じ数だとNOになります。最低で2種類の数があればよいと思います。基本はどちらか一方に決め打ちして辺を張りつづけて、同じ数のときだけ2種類目の方に辺を張ります。
E. Two Round Dances
n=int(input())
x=y=1
for i in range(n,0,-1):
x*=i
print(x//((n//2)**2)//2)
2人ペアを作ります。問題文がおかしいらしいです。よくわかりません。