AtCoder Beginner Contest 072/AtCoder Regular Contest 082
はい。
https://beta.atcoder.jp/contests/abc072
A - Sandglass2
Python3
x,t=map(int,input().split()) print(max(0,x-t))
引き算。負の数の時は0を出力。
B - OddString
Python3
s=input() ans="" for i in s[::2]: ans+=i print(ans)
問題文の指示通りに出力。というかfor i in s[::2]:は初めて書いたけど期待通りに動いたので楽だった。
C - Together
Python3
n=int(input()) a=[int(i) for i in input().split()] ans=0 d={} for i in a: if i-1 in d: d[i-1]+=1 else: d[i-1]=1 if d[i-1]>ans: ans=d[i-1] if i in d: d[i]+=1 else: d[i]=1 if d[i]>ans: ans=d[i] if i+1 in d: d[i+1]+=1 else: d[i+1]=1 if d[i+1]>ans: ans=d[i+1] print(ans)
制限が緩いので先頭から1足すか、1引くか、何もしないを全部カウントしつつ個数が最大のものを確認しておいてそれをそれ。
D - Derangement
Python3
n=int(input()) p=[int(i) for i in input().split()] ans=chk=0 for a,i in enumerate(p): a+=1 if a==i and chk==1: chk=0 elif a==i: ans+=1 chk=1 else: chk=0 print(ans)
先頭から見ていって両隣どちらとも自由に入替が出来る箇所と、隣り同士が連続した数で入替が決め打ちになる箇所を分けて数えれば大丈夫、多分。
E問題以降は次の機会に。