AtCoder Regular Contest 006

はい。
https://atcoder.jp/contests/arc006

A - 宝くじ

PyPy3

e=[int(i) for i in input().split()]
b=int(input())
l=[int(i) for i in input().split()]
ans=0
for i in l:
    if i in e:
        ans+=1
if ans==6: print(1)
elif ans==5 and b in l: print(2)
elif ans==5: print(3)
elif ans==4: print(4)
elif ans==3: print(5)
else: print(0)

買ったくじLの数字が当選番号Eの中にいくつあるか数える。5個だった場合はボーナス数字があるかも確認する。当選条件を満たさない場合に0を出力するのも忘れずに。

B - あみだくじ

PyPy3

n,l=map(int,input().split())
w=[input() for i in range(l)]
t=input()
ans=t.index("o")
for i in range(l-1,-1,-1):
    if ans-2>-1 and w[i][ans-1]=="-":
        ans-=2
    elif ans+2<n*2-1 and w[i][ans+1]=="-":
        ans+=2
print(ans//2+1)

oのゴールから移動をシミュして辿り着くトコが解になる。端とか縦線1本のみの場合とかに気をつける。

C - 積み重ね

PyPy3

n=int(input())
l=[int(input()) for i in range(n)]
ans=[]
ans.append(l[0])
for i in range(1,n):
    f=1
    for j in  range(len(ans)):
        if l[i]<=ans[j]:
            ans[j]=l[i]
            f=0
            break
    if f:
        ans.append(l[i])
    ans.sort()
print(len(ans))

最初に1個目のダンボールだけのリストを用意する。2個目以降は重ねられるなら重ねる(リスト内の値を更新する)。重ねられないならリストに追加する。常に小さい方から確認するようにリストをソートするのを繰り返す。
最後にリストの長さが解になります。

D - アルファベット探し

Python3

xy=[(1,0),(-1,0),(0,1),(0,-1),(-1,-1),(-1,1),(1,1),(1,-1)]
h,w=map(int,input().split())
l=[list(input()) for i in range(h)]
ans=[0]*3
for p in range(h*w):
    i=p//w
    j=p%w
    if l[i][j]=="o":
        t={(i,j)}
        l[i][j]="x"
        cnt=1
        nin=nax=j
        while len(t):
            a,b=t.pop()
            for x,y in xy:
                x,y=x+a,y+b
                if l[x][y]=="o":
                    cnt+=1
                    l[x][y]="x"
                    t.add((x,y))
                    nin,nax=min(nin,y),max(nax,y)
        cnt//=((nax-nin+1)//5)**2
        if cnt==12: ans[0]+=1
        elif cnt==16: ans[1]+=1
        elif cnt==11: ans[2]+=1
        else: ans[4]+=1 #RE
print(*ans)

PyPy3を使うとMLEになります。
Aは12個のo、Bは16個、cは11個です。
左上から見ていってoがあったら縦横斜めにいくつoがあるかと、座標の端の値を取ります。最大値-最小値+1が5の倍数になるはずです。5のn倍だとn倍の大きさの文字A,B,Cです。
oの個数を数えるときに任意の文字に置換するか、座標をメモする(のは多分止めておいた方がいいです)かで重複して数えないようにします。
n倍の大きさの文字はn2個のoになります。n2で割ると12,16,11のいずれかの数になるはずです。
12,16,11になる個数をそれぞれ数えていくと解になるはずです。