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問題以降は次の機会に。