Harryxun/GPT-100-sft-dataset huggingface dataset:
Problem p03822 (python)

Fixed submission:
import sys
sys.setrecursionlimit(10**6)

n = int(input())
tree = [list() for _ in  range(n+1)]
for i in range(2,n+1):
  a = int(input())
  tree[a].append(i)
win = [0]*(n+1)
  
def dfs(v,win):
  if tree[v] == []:
    win[v] = 0 
    return win[v]
  l = list()
  for x in tree[v]:
    dfs(x,win)
    l.append(win[x])
  l.sort(reverse=True)
  win[v] = max(i+1+l[i] for i in range(len(l)))
  return win[v]

print(dfs(1,win))

Buggy submission (verdict: Runtime Error):
n = int(input())
tree = [list() for _ in  range(n+1)]
for i in range(2,n+1):
  a = int(input())
  tree[a].append(i)
win = [0]*(n+1)
  
def dfs(v,win):
  if tree[v] == []:
    win[v] = 0 
    return win[v]
  l = list()
  for x in tree[v]:
    dfs(x,win)
    l.append(win[x])
  l.sort(reverse=True)
  win[v] = max(i+1+l[i] for i in range(len(l)))
  return win[v]

print(dfs(1,win))
Problem p02771 (python)

Fixed submission:
n_list = set(input().split())

if len(n_list)== 2:
  print("Yes")
else:
  print("No")

Buggy submission (verdict: Runtime Error):
n_list = set(input().split())

if len(n_list)= 2:
  print("Yes")
else:
  print("No")
Problem p02773 (python)

Fixed submission:
from collections import defaultdict

n =int(input())

d = defaultdict(int)

for _ in range(n):
    s = input()
    d[s] += 1

result = sorted(d.items(), key=lambda x: -x[1])

max_val = 0
maxes = []
for r in result:
    if max_val > r[1]:
        break
    else:
        max_val = r[1]
        maxes.append(r[0])

print("\n".join(sorted(maxes)))

Buggy submission (verdict: Runtime Error):
from collections import Counter

n =int(input())
slist = []
for _ in range(n):
  s = input()
  slist.appemd(s)

Counter(slist)
Problem p02779 (python)

Fixed submission:
n =int(input())
a_n = set(map(int, input().split()))

if n==len(a_n):
    print("YES")
else:
    print("NO")

Buggy submission (verdict: Runtime Error):
n =int(input())
a_n = set(map(int, inpt.split()))

if n==len(a_n):
    print("YES")
else:
    print("NO")
Problem p02793 (python)

Fixed submission:
import sys
input = sys.stdin.readline
from fractions import gcd
import math
n = int(input())
a = list(map(int, input().split()))
def lcm(a, b):
    return (a * b) // gcd(a, b)
m = 1
for x in a:
    m = (m * x) // gcd(m, x)
# print(m)
MOD = 1000000007
ans = 0
for x in a:
    b = m // x
    ans = ans + b
ans = ans % MOD
print(math.floor(ans))

Buggy submission (verdict: Runtime Error):
from fractions import gcd
import math
n = int(input())
a = list(map(int, input().split()))
def lcm(a, b):
    return (a * b) // gcd(a, b)
m = 1
for x in a:
    m = lcm(m, x)
# print(m)
MOD = 1000000007
ans = 0
for x in a:
    b = m / x
    ans = (ans + b) % MOD
print(math.floor(ans))
Problem p03038 (python)

Fixed submission:
import sys
input = sys.stdin.readline

import numpy as np

N, M = map(int, input().split())
A = sorted(list(map(int, input().split())))

#2次元配列を作る
#[j][0]で数字の個数を、[j][1]で数字自体を取り出す
BC = []
for _ in range(M):
  BC.append(list(map(int, input().split())))

BC = np.array(BC)
BC = BC[BC[:,1].argsort()[::-1],:]


ans = 0
nowaindex = 0
for i, bc in enumerate(BC):
  #continueflagが0のままならループ全体を抜ける
  continueflag = 0
  b = bc[0]
  c = bc[1]
  for j in range(b):
    if A[nowaindex]<c:
      ans += c
      nowaindex += 1
      continueflag += 1
      if nowaindex > N-1:
        continueflag = 0
        break
    else: break
  if continueflag == 0: break
    
print(ans + sum(A[nowaindex:]))

Buggy submission (verdict: Runtime Error):
import sys
input = sys.stdin.readline

import numpy as np

N, M = map(int, input().split())
A = sorted(list(map(int, input().split())))

#2次元配列を作る
#[j][0]で数字の個数を、[j][1]で数字自体を取り出す
BC = []
for _ in range(M):
  BC.append(list(map(int, input().split())))

BC = np.array(BC)
BC = BC[BC[:,1].argsort()[::-1],:]


ans = 0
nowaindex = 0
for i, bc in enumerate(BC):
  #continueflagが0のままならループ全体を抜ける
  continueflag = 0
  b = bc[0]
  c = bc[1]
  for j in range(b):
    if A[nowaindex]<c:
      ans += c
      nowaindex += 1
      continueflag += 1
    else: break
  if continueflag == 0: break
    
print(ans + sum(A[nowaindex:]))
Problem p03127 (python)

Fixed submission:
N = int(input())
A = sorted(list(map(int, input().split())))

while len(A) >= 2: #残りの数が1になったら終わり
  if A[0] == 1: break
  #余りが出る場合は、左側の数字と余りを入れ替える
  rem = A[1] % A[0] #余り
  if rem != 0: A[0], A[1] = rem, A[0]
  #余りが0の場合、そいつは下位互換なので要らない？
  else: del A[1]

print(A[0])

Buggy submission (verdict: Runtime Error):
N = int(input())
A = sorted(list(map(int, input().split())))

while len(A) >= 2: #残りの数が1になったら終わり
  if A[0] == 1: break
  #余りが出る場合は、左側の数字と余りを入れ替える
  rem = A[1] % A[0] #余り
  if rem != 0: A[0], A[1] = rem, A[0]
  #余りが0の場合、そいつは下位互換なので要らない？
  else: del A[1]
  print(A)

print('出たよ'+str(A[0]))
Problem p03265 (python)

Fixed submission:
x1,y1,x2,y2 = map(int,input().split())

x = x2-x1
y = y2-y1

x3 = x2 - y
y3 = y2 + x
x4 = x3 - x
y4 = y3 - y

print(x3,y3,x4,y4)

Buggy submission (verdict: Runtime Error):
x1,y1,x2,y2 = map(int,input())

x = x2-x1
y = y2-y1

x3 = x2 - y
y3 = y2 + x
x4 = x3 - x
y4 = y3 - y

print(x3,y3,x4,y4)
Problem p03272 (python)

Fixed submission:
n, i = map(int, input().split())

print(n-i+1)

Buggy submission (verdict: Runtime Error):
n, i = map(int, input())

print(n-i+1)
Problem p03315 (python)

Fixed submission:
s = input()
a = 0
for i in range(4):
  a = a + 1 if s[i:i+1] == '+' else a - 1

print(a)

Buggy submission (verdict: Runtime Error):
s = input()

a = 0
for i in range(4):
  a += 1 if s[i:i+1] == "+" else a -= 1
print(a)

Buggy submission (verdict: Runtime Error):
s = input()

a = 0
for i in range(4):
  a += 1 if s[i:i+1] == '+' else a -= 1
print(a)
Problem p03804 (python)

Fixed submission:
N, M = map(int,input().split())

tg = [input() for _ in range(N)]

#tmpl0〜M-1
tmpl = [input() for _ in range(M)]

#tg0〜N-Mにつき、tmpl0を探し、一致したら同じ添字のtmpl1~M-1を探す
for i in range(0,N-M+1):
  for j in range(0,N-M+1):
    if tmpl[0] == tg[i][j:j+M]:
      if N == 1:
        print('Yes')
        exit()
      for k in range(1,M):
        if tmpl[k] != tg[i+k][j:j+M]: break
      else:
        print('Yes')
        exit()
print('No')

Buggy submission (verdict: Runtime Error):
N, M = map(int,input().split())

tg = [input() for _ in range(N)]

#tmpl0〜M-1
tmpl = [input() for _ in range(M)]

#tg0〜N-Mにつき、tmpl0を探し、一致したら同じ添字のtmpl1~M-1を探す
for i in range(0,N-M+1):
  for j in range(0,N-M+1):
    if tmpl[0] == tg[i][j:j+M]:
      if N == 1:
        print('Yes')
        exit()
      for k in range(i+1,i+M):
        if tmpl[k] != tg[i+k][j:j+M]: break
      else:
        print('Yes')
        exit()
print('No')

Buggy submission (verdict: Runtime Error):
N, M = map(int,input().split())

tg = [input() for _ in range(N)]

#tmpl0〜M-1
tmpl = [input() for _ in range(M)]

#tg0〜N-Mにつき、tmpl0を探し、一致したら同じ添字のtmpl1~M-1を探す
for i in range(0,N-M+1):
  for j in range(0,N-M+1):
    if tmpl[0] == tg[i][j:j+M]:
      for k in range(i+1,i+M):
        if tmpl[k] != tg[i+k][j:j+M]: break
      else:
        print('Yes')
        exit()
print('No')

Buggy submission (verdict: Runtime Error):
N, M = map(int,input().split())

tg = [list(map(int,input().split())) for _ in range(N)]

#tmpl0〜M-1
tmpl = [list(map(int,input().split())) for _ in range(M)]

#tg0〜N-Mにつき、tmpl0を探し、一致したら同じ添字のtmpl1~M-1を探す
for i in range(0,N-M+1):
  for j in range(0,N-M+1):
    if tmpl[0] == tg[i][j:j+M]:
      for k in range(i+1,i+M):
        if tmpl[k] != tg[i+k][j:j+M]: break
      else:
        print('Yes')
        exit()
print('No')
Problem p03835 (python)

Fixed submission:
K, S = map(int,input().split())
import itertools

ar = itertools.product(range(K+1), repeat=2)

ans = 0
for a,b in ar:
  if S - a-b <= K and a+b <= S: ans += 1

print(ans)

Buggy submission (verdict: Runtime Error):
K, S = map(int,input().split())
import itertools

ar = itertools.product(range(K+1), repeat=2)

ans = 0
for a,b in ar:
  if S - a-b <= K and S-a-b >=: ans += 1

print(ans)
Problem p02859 (python)

Fixed submission:
r=int(input())
print(int(r**2))

Buggy submission (verdict: Runtime Error):
print(int(r**2))
Problem p02598 (python)

Fixed submission:
#揃える長さを決め打って二分探索
import sys
import math
readline = sys.stdin.buffer.readline
def even(n): return 1 if n%2==0 else 0
n,k = map(int,readline().split())
lst1 = list(map(int,readline().split()))
lst1.sort(reverse=True)
def func(mid): #ここが関数部分
    res = 0
    for i in range(n):
        if mid >= lst1[i]:
            continue
        res += math.ceil(lst1[i]/mid)-1
        if res > k:
            return False
    return True


def binary_search(): #2分探索
    ok = 10**9
    ng = 0
    while abs(ok-ng)>1:
        mid = (ok+ng)//2
        if func(mid):
            ok = mid
        else:
            ng = mid

    return ok

print(binary_search())

Buggy submission (verdict: Runtime Error):
#揃える長さを決め打って二分探索
import sys
import math
readline = sys.stdin.buffer.readline
def even(n): return 1 if n%2==0 else 0
n,k = map(int,readline().split())
lst1 = list(map(int,readline().split()))
lst1.sort(reverse=True)
def func(mid): #ここが関数部分
    res = 0
    for i in range(n):
        if mid >= lst1[i]:
            continue
        res += math.ceil(lst1[i]/mid)-1
        if res > k:
            return False
    return True


def binary_search(): #2分探索
    ok = 10**9
    ng = -1
    while abs(ok-ng)>1:
        mid = (ok+ng)//2
        if func(mid):
            ok = mid
        else:
            ng = mid

    return ok

if k == 0:
    print(max(lst1))
else:
    print(binary_search())

Buggy submission (verdict: Runtime Error):
#揃える長さを決め打って二分探索
import sys
import math
readline = sys.stdin.buffer.readline
def even(n): return 1 if n%2==0 else 0
n,k = map(int,readline().split())
lst1 = list(map(int,readline().split()))
lst1.sort(reverse=True)
def func(mid): #ここが関数部分
    res = 0
    for i in range(n):
        if mid >= lst1[i]:
            continue
        res += math.ceil(lst1[i]/mid)-1
        if res > k:
            return False
    return True


def binary_search(): #2分探索
    ok = 10**9
    ng = -1
    while abs(ok-ng)>1:
        mid = (ok+ng)//2
        if func(mid):
            ok = mid
        else:
            ng = mid

    return ok


print(binary_search())
Problem p02634 (python)

Fixed submission:
#AGC046-B Extension
"""
https://maspypy.com/atcoder-%E5%8F%82%E5%8A%A0%E6%84%9F%E6%83%B3-2020-06-20agc046
「操作列の結果、完成図としてありうるものを数えよ」
という問題は、複数の操作後の完成図が同じ結果を取りうることを考慮し、
・完成図としてあり得るパターンの同値な言い換えを探す
・操作に制約を加えても同じ完成図を作成できることが一意になる
のどちらかを目指して、考察していく。

以下、問題の「縦を選んだ場合のマスの変化」は上ではなく下として考える。

ケース2の
2 1 3 4
について考える。
これは縦に1回と横に3回の追加を行うが、
実は縦の制御について、最も左端に存在する黒タイルについて場合分けをして良い。
w???
w???
b???
の盤面について考えた時、これは初手に縦の操作を選ぶことで達成できるが、
そうでないような操作で上図と同じような盤面になったとして、実は左下の位置が
黒になるような場合、？の位置もまた同じように決定されるので、そのような
操作は考慮しなくて良いことが分かる。

そのような操作とは、つまり、"縦方向の拡張を最速で行わなかった"ような操作である。
考察すべき2つめの条件、操作に制約を加えても同じ完成図を作成できることが一意になる
を達成することができた。

この時の?の組み合わせは、横拡張3回のうち、すべての拡張で3つを選べるので、
3*3通り
である。
次は、一番下の行で、初めて黒が出る位置を1つずつずらして考えていく。
w???
w???
wb??

この場合、右に1回横拡張を挟んで、すぐさま縦拡張,そのあと横拡張を2回行うので、
2*3*3

w???
w???
wwb?

2*2*3

w???
w???
wwwb

2*2*2

よって合計65通りとなる。

この操作をdpによって拡張する。
具体的には、
dp[i][j]:横幅iの時点で残りの縦幅がjの時、縦幅を利用する際の通し数
"""
import sys
readline = sys.stdin.buffer.readline
def even(n): return 1 if n%2==0 else 0
A,B,C,D = map(int,readline().split())
mod = 998244353
dp0 = [[0] * (D + 1) for _ in range(C + 1)]
dp1 = [[0] * (D + 1) for _ in range(C + 1)]
 
 
dp0[A][B] = 1
 
for x in range(A, C + 1):
    for y in range(B, D + 1):
        if x == A and y == B:
            continue
        dp0[x][y] = (dp0[x][y - 1] * x + dp1[x][y - 1] * 1) % mod
        dp1[x][y] = (dp0[x - 1][y] * y + dp1[x - 1][y] * y) % mod

ans = (dp0[C][D] + dp1[C][D]) % mod
print (ans)

Buggy submission (verdict: Runtime Error):
#AGC046-B Extension
"""
https://maspypy.com/atcoder-%E5%8F%82%E5%8A%A0%E6%84%9F%E6%83%B3-2020-06-20agc046
「操作列の結果、完成図としてありうるものを数えよ」
という問題は、複数の操作後の完成図が同じ結果を取りうることを考慮し、
・完成図としてあり得るパターンの同値な言い換えを探す
・操作に制約を加えても同じ完成図を作成できることが一意になる
のどちらかを目指して、考察していく。

以下、問題の「縦を選んだ場合のマスの変化」は上ではなく下として考える。

ケース2の
2 1 3 4
について考える。
これは縦に1回と横に3回の追加を行うが、
実は縦の制御について、最も左端に存在する黒タイルについて場合分けをして良い。
w???
w???
b???
の盤面について考えた時、これは初手に縦の操作を選ぶことで達成できるが、
そうでないような操作で上図と同じような盤面になったとして、実は左下の位置が
黒になるような場合、？の位置もまた同じように決定されるので、そのような
操作は考慮しなくて良いことが分かる。

そのような操作とは、つまり、"縦方向の拡張を最速で行わなかった"ような操作である。
考察すべき2つめの条件、操作に制約を加えても同じ完成図を作成できることが一意になる
を達成することができた。

この時の?の組み合わせは、横拡張3回のうち、すべての拡張で3つを選べるので、
3*3通り
である。
次は、一番下の行で、初めて黒が出る位置を1つずつずらして考えていく。
w???
w???
wb??

この場合、右に1回横拡張を挟んで、すぐさま縦拡張,そのあと横拡張を2回行うので、
2*3*3

w???
w???
wwb?

2*2*3

w???
w???
wwwb

2*2*2

よって合計65通りとなる。

この操作をdpによって拡張する。
具体的には、
dp[i][j]:横幅iの時点で残りの縦幅がjの時、縦幅を利用する際の通し数
"""
A,B,C,D = map(int,readline().split())
mod = 998244353
dp0 = [[0] * (D + 1) for _ in range(C + 1)]
dp1 = [[0] * (D + 1) for _ in range(C + 1)]
 
 
dp0[A][B] = 1
 
for x in range(A, C + 1):
    for y in range(B, D + 1):
        if x == A and y == B:
            continue
        dp0[x][y] = (dp0[x][y - 1] * x + dp1[x][y - 1] * 1) % mod
        dp1[x][y] = (dp0[x - 1][y] * y + dp1[x - 1][y] * y) % mod

ans = (dp0[C][D] + dp1[C][D]) % mod
print (ans)
Problem p02781 (python)

Fixed submission:
#ABC154-E Almost Everywhere Zero

#桁DP

"""
問題：
n以下の0以外の数字の数が丁度k個である整数の個数を求めよ。

解法：
桁DP
以下の条件があったら桁DPを疑うべし
・桁に関している
・制約が大きい
・整数nがある範囲を動くときの、〜〜〜の最大値を求めよ
・整数nがある範囲を動くときの、〜〜〜という条件を満たすものは何通りあるか←今回はコッチ

考え方：
桁DPでは上位桁から条件を絞っていって、下位桁にクエリを出すという再帰方法で解く。この時、何回もこの再帰をやっていると
下位桁が全く同じ条件になることが出現するので、それをメモ化、呼び出しして動的に解く。
そのためのdpテーブルは３次元で、各階層に対応するのは以下のようなデータ。

dp[i][j][k] = (上から)i桁まで見た,j個Kを使った,k=0:制約ありk=1:自由     の時の条件を満たす場合の個数(value)

問題により多少dpテーブルの内容や順番は異なるが、i桁目まで見た、と、自由度kについての制約は必ずテーブルの中に入る。
もうひとつ、今回で言えばjのテーブルは、kをいくつ使ったか、全桁の合計がD以下であるみたいな問題はいま合計はいくらか
みたいなデータになる。
"""

n = input() #桁DPの場合、nはstr型で取る
m = len(n)
K = int(input()) #DPテーブルのkとかぶって紛らわしいので、大文字にする

dp = [[[0]*2 for j in range(4)] for i in range(105)]
dp[0][0][0] = 1
for i in range(m): #m=桁数
    for j in range(4): #0以外の数はj回使っている
        for k in range(2): #制約,自由の2通り(制約がかかってから気にするんじゃなくて、
            #最初から全桁に制約がかかってるもんだと思って全部計算する)
            nd = int(n[i]) #その桁の数字(制約ありの時に使う)
            for d in range(10): #下位桁に対して10回(0~9まで)まわす
                ni = i+1 #下位桁に
                nj = j #0以外を使った回数はj回
                nk = k #制約か自由か
                if d != 0: nj += 1 #その桁を0だと仮定して場合、現在までの0の個数+=1
                if nj > K: continue #0の個数がKを超えていたら条件を満たさない
                if k == 0: #制約ありの場合
                    if d > nd:continue #その桁の制約を超えていたら飛ばす
                    if d < nd:nk = 1 #逆にd未満ならば、下位桁は自由になるので、k=1:自由にしてやる
                #この下位桁に対するforループを全て満たした時、dpテーブルを更新
                dp[ni][nj][nk] += dp[i][j][k]

ans = dp[m][K][0] + dp[m][K][1] #制約ありでもなしでも良いので、両方足す

print(ans)

Buggy submission (verdict: Runtime Error):
import sys
read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines
s = readline().rstrip().decode('utf-8')
k = int(readline())
n = len(s)
"""
0の場所を固定してやる。
その時、9**(0以外が入る桁の数)が答え。
"""

from math import factorial

def permutations_count(n,r):
    """順列nPr"""
    return factorial(n) // factorial(n-r)

def combinations_count(n,r):
    """組み合わせnCr"""
    return factorial(n) // (factorial(n-r)*factorial(r))
if k == 1:
    i = 1
    ans = 0
    while True:
        if n == i:
            ans += int(s[0])
            break
        else:
            ans += 9
        i += 1
    print(ans)
    exit()

ans = 0
for i in range(1,n+1): #n+1桁
    if i < k:
        continue
    elif i == k:
        ans += 9**i
    else:
        ans += 9*(9**(k-1)*combinations_count(i-1,k-1)) #9は一番上の桁で、9通りが確定.kは1つ使っているのでk-1通りi桁からk-1個の並び

#現在、n桁(長さの桁)の9999...までの通りをカウントしてある。
#ここから、上位3桁に着目して、そこまでの分を引いてやる
if k == 2:
    point2 = int(s[:2]) #10~99までありえる
    delay = 0
    if point2 == 99:
        print(ans)
        exit()
    for i in range(point2,100):
        if not "0" in str(i):
            delay += 1
        else:
            delay += 9*(n-2)
    print(ans-delay)
else:
    point3 = int(s[:3])
    delay = 0
        if point3 == 999:
        print(ans)
        exit()
    for i in range(point3,1000):
        if not "0" in str(i):
            delay += 1
        else:
            if s[1:3] == "00":
                delay += 81*combinations_count(n-3,2)
            else:
                delay += 9*(n-3)
    print(ans-delay)
Problem p02793 (python)

Fixed submission:
n = int(input())
lst1 = list(map(int,input().split()))
mod = 10**9+7
 
def GCD(a,b):
    if b == 0:
        return a
    else:
        return GCD(b,a%b)
def LCM(a,b):
    return (a//GCD(a,b)*b)

l = 1
for i in lst1:
    l = LCM(l,i)

ans = 0
for i in range(n):
    ans += l//lst1[i]
 
print(ans%mod)

Buggy submission (verdict: Runtime Error):
import testcase
n = 10**4
lst1 = list(map(int,testcase.integers(10**4,1,10**5+1).split()))
mod = 10**9+7

import math
#リスト l の最大公約数
def lcmlist(l):
    a = l[0]
    for i in range(len(l)):
        a = int(a)
        a = a*l[i]//math.gcd(a,l[i])
    return int(a)

g = lcmlist(lst1)
ans = 0
for i in range(n):
    ans += g//lst1[i]
print(ans%mod)

Buggy submission (verdict: Runtime Error):
n = int(input())
lst1 = list(map(int,input().split()))
mod = 10**9+7

import fractions as math
#リスト l の最大公約数
def lcmlist(l):
    a = l[0]
    for i in range(len(l)):
        a = int(a)
        a = a*l[i]/math.gcd(a,l[i])
    return int(a)

g = lcmlist(lst1)
ans = 0
for i in range(n):
    ans += g//lst1[i]%mod

print(ans%mod)

Buggy submission (verdict: Runtime Error):
n = int(input())
lst1 = list(map(int,input().split()))
mod = 10**9+7

import math
#リスト l の最大公約数
def lcmlist(l):
    a = l[0]
    for i in range(len(l)):
        a = int(a)
        a = a*l[i]/math.gcd(a,l[i])
    return int(a)

g = lcmlist(lst1)
ans = 0
for i in range(n):
    ans += g//lst1[i]%mod

print(ans%mod)
Problem p02833 (python)

Fixed submission:
n = int(input())
k = 10
ans = 0


if n%2!=0:
	print(0)
	exit()

def k_change():
	global k
	k = k*5


def func(n):
	global ans,k
	#print(k)
	if n < k:
		print(ans)
		exit()
	ans += n//k
	k_change()
	func(n)

func(n)

Buggy submission (verdict: Runtime Error):
n = int(input())
k = 10
ans = 0


if n%2!=0:
	print(0)
    exit()

def k_change():
    global k
    k = k*5


def func(n):
    global ans,k
    #print(k)
    if n < k:
        print(ans)
        exit()
    ans += n//k
    k_change()
    func(n)

func(n)
Problem p02847 (python)

Fixed submission:
s = input()
if s == "SUN":
    print(7)
elif s == "MON":
    print(6)
elif s == "TUE":
    print(5)
elif s == "WED":
    print(4)
elif s == "THU":
    print(3)
elif s == "FRI":
    print(2)
else:
    print(1)

Buggy submission (verdict: Runtime Error):
import math
a,b,x = map(int,input().split())
 
maxint = 10**9
 
def dn(p):
    plist = list(str(p))
    return len(plist) #nの桁数d(n)が帰る

def nibuntansaku(l,u):
    c = (l+u)//2 #切り捨て
    if c <= (x-b*dn(c))/a: #条件を満たす(つまり、)
        return c,u
    else:
        return l,c





#上限(大きい)
n_upper = math.ceil((x-b*1)/a)
#下限(小さい)
n_lower = math.floor((x-b*10)/a)


if n_upper < 1 : #最小条件ですでに1未満の場合は0を出力
    print(0)
    exit()

while True:
    if abs(n_upper-n_lower) <= 1:
        break 
    n_lower,n_upper = nibuntansaku(n_lower,n_upper)

if n_upper+1 <= (x-b*dn(n_upper+1))/a:
    ans = n_upper+1

elif n_upper <= (x-b*dn(n_upper))/a:
    ans = n_upper
else:
    ans = n_lower

print(min(ans,maxint))
Problem p02912 (python)

Fixed submission:
import math
n,m = map(int,input().split())

a = input()
list1 = list(map(int,a.split()))
list1.sort()
list1.reverse()
i = 0
s = math.floor(list1[0]/2)

if n == 1:
    print(math.floor(list1[0]/(2**m)))
    exit()

while True:
    while True:
        if i+1 > n:
            break
        if list1[i] < s or m == 0:
            break
        list1[i] = math.floor(list1[i]/2)
        m -= 1
        i += 1
    if m == 0:
        break
    list1.sort()
    list1.reverse()
    s = math.floor(list1[0]/2)
    i = 0
print(sum(list1))

Buggy submission (verdict: Runtime Error):
import math
n,m = map(int,input().split())

a = input()
list1 = list(map(int,a.split()))
list1.sort()
list1.reverse()
i = 0
s = math.floor(list1[0]/2)

if n == 1:
    print(math.floor(list1[0]/(2**m)))
    exit()

while True:
    while True:
        if list1[i] < s or m == 0:
            break
        list1[i] = math.floor(list1[i]/2)
        m -= 1
        i += 1
    if m == 0:
        break
    list1.sort()
    list1.reverse()
    s = math.floor(list1[0]/2)
    i = 0
print(sum(list1))

Buggy submission (verdict: Runtime Error):
import math
n,m = map(int,input().split())

a = input()
list1 = list(map(int,a.split()))
list1.sort()
list1.reverse()
cout = 0
cout_of_index = 0
cout_of_i = 0
kai = 0
def func(j):
    global list1
    global cout_of_i
    global kai
    global m
    if cout_of_i == m:
        kai = j
        return
    sd = math.floor(j/2)
    if sd >= list1[m-(cout_of_i+1)]:
        cout_of_i += 1
        func(sd)
    else:
        cout_of_i += 1
        kai = sd
        return 
    return 

if n == 1:
    print(math.floor(list1[0]/(2**m)))
    exit()
while True:
    if cout_of_i >= m:
        break
    s = max(list1)
    func(s)
    cout += kai
    list1[cout_of_index] = 0
    cout_of_index += 1
    

for i in range(cout_of_index,n):
    cout += list1[i]
print(cout)
Problem p02959 (python)

Fixed submission:
n = int(input())
a = input()
la = list(map(int,a.split())) #街にいるモンスター数
b = input()
lb = list(map(int,b.split())) #ダメージ

damagecost = 0
killmonster = 0
for i in range(n):
    if lb[i] <= la[i]:
        killmonster += lb[i]
    else:
        killmonster += la[i]
        damagecost = lb[i] - la[i]
        if damagecost >= la[i + 1]:
            killmonster += la[i + 1]
            la[i + 1] = 0
        else:
            killmonster += damagecost
            la[i + 1] = la[i + 1] - damagecost
print(killmonster)

Buggy submission (verdict: Runtime Error):
N = int(input())
p = input()
list1 = list(map(int,p.split()))

list2 = []
for i in range(1,N + 1):
    list2.append(i)

if list1 == list2:
    print("YES")
    exit()
for i in range(0,N):
    if list1[i] != i+1:
        if i+1 == list1[list1[i]-1]:
            list1[list1[i]-1] = list1[i]
            list1[i] = i+1
            

        if list1 == list2:
            print("YES")
            exit()
        else:
            print("NO")
            exit()
Problem p03017 (python)

Fixed submission:
import sys
readline = sys.stdin.buffer.readline
def even(n): return 1 if n%2==0 else 0

"""
A<Bとする。
C<Dの場合：
A～CとB~Dの間に"##"が無ければ達成できる.
C>Dの場合：
上記に加え、B~Cの間に"..."が存在すれば達成できる
"""

n,a,b,c,d = map(int,readline().split())
s = readline().rstrip().decode('utf-8')
a,b,c,d = a-1,b-1,c-1,d-1

flag = 1
space = 0
res = 0
rock = 0
for i in range(a,c+1):
	if s[i] == "#":
		rock += 1
	else:
		rock = 0
	if rock >= 2:
		flag = 0
for i in range(b,d+1):
	if s[i] == "#":
		rock += 1
	else:
		rock = 0
	if rock >= 2:
		flag = 0
if c > d:
	for i in range(b-1,d+2):
		if s[i] == ".":
			space += 1
		else:
			res = max(res,space)
			space = 0
	res = max(res,space)
	if res < 3:
		flag = 0

print("Yes" if flag else "No")

Buggy submission (verdict: Runtime Error):
import sys
readline = sys.stdin.buffer.readline
def even(n): return 1 if n%2==0 else 0

"""
A<Bとする。
C<Dの場合：
A～CとB~Dの間に"##"が無ければ達成できる.
C>Dの場合：
上記に加え、B~Cの間に"..."が存在すれば達成できる
"""

n,a,b,c,d = map(int,readline().split())
s = readline().rstrip().decode('utf-8')
a,b,c,d = a-1,b-1,c-1,d-1

flag = 1
space = 0
res = 0
rock = 0
for i in range(a,c+1):
	if s[i] == "#":
		rock += 1
	else:
		rock = 0
	if rock >= 2:
		flag = 0
for i in range(b,d+1):
	if s[i] == "#":
		rock += 1
	else:
		rock = 0
	if rock >= 2:
		flag = 0
if c > d:
	for i in range(b-1,c+2):
		if s[i] == ".":
			space += 1
		else:
			res = max(res,space)
			space = 0
	if res < 3:
		flag = 0


print("Yes" if flag else "No")
Problem p03073 (python)

Fixed submission:
list1 = list(input())
count = 0
#貪欲
for i in range(1,len(list1)):
	if list1[i] == list1[i-1]:
		if list1[i] == "1":
			list1[i] = "0"
		else:
			list1[i] = "1"
		count += 1
print(count)

Buggy submission (verdict: Runtime Error):
list1 = list(input())

#貪欲
for i in range(1,len(list1)):
	if list1[i] == list1[i-1]:
		if list1[i] == "1":
			list1[i] = "0"
		else:
			list1[i] = "1"
		count += 1
print(count)