AtCoder Beginner Contest 041 参加記
はい。 ooox
http://abc041.contest.atcoder.jp
D問題はxっても部分点は取ったので330点で122位だった。
A - 添字
s=raw_input() i=int(raw_input()) print s[i-1]
i文字目を出力するのに0-indexedなことを気をつけて出力で大丈夫。
B - 直方体
mod=1000000007 a,b,c=map(int,raw_input().split()) print a*b*c%mod
Pythonなので最後だけmod取れば大丈夫だったけど、言語によってはa * bでmod取ってそれに * cしてmod取る必要がある場合もあり。
C - 背の順
n=int(raw_input()) l=map(int,raw_input().split()) memo={} for i,j in enumerate(l): memo[j]=i+1 l.sort() for i in l[::-1]: print memo[i]
数列のそれぞれが何番目の数か連想配列に登録して、数列はソートした。ソート済のを逆順からみて何番目の数だったかを出力した。
D - 徒競走
#!/usr/bin/env python # -*- coding: UTF-8 -*- # 部分点解 import itertools n,m=map(int,raw_input().split()) if n>8: print -1 exit() l=range(1,n+1) memo=list(itertools.permutations(l)) q=[] for i in range(m): x,y=map(int,raw_input().split()) q.append((x,y)) ans=chk=0 for i in memo: f=1 for x,y in q: if i.index(x)>i.index(y): f=0 break if f: ans+=1 print ans
部分点しか出来なかった。部分点取るならNの並び方を全部列挙して、x,yが先後の矛盾がないものをカウントすれば部分点。