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

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

ans = 0
current_height = 0
for i in range(N):
  # h[i-1]までの高さにはh[i]も育っているので、その差分だけ水をやる必要がある
  # current_height は一つ手前の花の高さ
  if h[i] > current_height:
    ans += h[i] - current_height
    current_height = h[i]
  else:
    # i-1番目の花の高さのほうがi番目より高いなら、水を新たにやる必要はない（i-1に水をやるときに同時に達成できるので）
    current_height = h[i]



print(ans)

Buggy submission (verdict: Runtime Error):
"""
0で断絶が生じなければ、一番低い部分は共通で処理できる

Nもhも小さいので、貪欲？にやればもんだいなさそう。
0以外で連続してる部分それぞれについて、実際に水やりを行う。
伸ばすよりはhを短くする方が処理的に楽
"""




N = int(input())
H = list(map(int, input().split()))

ans = 0
l,r = 0,0
while True:
    if l > N-1 or r > N-1:
        l,r = 0,0

    while l < N H[l] == 0:
        l += 1

    if l >= N:
        break

    r = l
    while r < N and H[r] != 0:
        r += 1

    tmp = min(H[l:min(r,N)])
    for i in range(l,min(r,N)):
        H[i] -= tmp
    ans += tmp
    l = r + 1

    

print(ans)

Buggy submission (verdict: Runtime Error):
"""
0で断絶が生じなければ、一番低い部分は共通で処理できる

Nもhも小さいので、貪欲？にやればもんだいなさそう。
0以外で連続してる部分それぞれについて、実際に水やりを行う。
伸ばすよりはhを短くする方が処理的に楽
"""




N = int(input())
H = list(map(int, input().split()))

ans = 0
l,r = 0,0
while True:
    if l > N-1 or r > N-1:
        l,r = 0,0

    while H[l] == 0:
        l += 1

    if l == N:
        break
    
    r = l
    while r < N and H[r] != 0:
        r += 1

    tmp = min(H[l:min(r,N)])
    for i in range(l,min(r,N)):
        H[i] -= tmp
    ans += tmp
    l = r + 1

    if sum(H) == 0:
        break

print(ans)

Buggy submission (verdict: Runtime Error):


N = int(input())
H = list(map(int, input().split()))

ans = 0
l,r = 0,0
while True:
    if l > N-1 or r > N-1:
        l,r = 0,0

    while H[l] == 0:
        l += 1
    r = l
    while r < N and H[r] != 0:
        r += 1

    tmp = min(H[l:min(r,N)])
    for i in range(l,min(r,N)):
        H[i] -= tmp
    ans += tmp
    l = r + 1

    if sum(H) == 0:
        break

print(ans)
Problem p03148 (python)

Fixed submission:
from collections import Counter

n,k = map(int, input().split())

sushis = [[0 for _ in range(2)] for _ in range(n)]
cnt_sushi_type = {}
for i in range(n):
  t,p = map(int, input().split())
  sushis[i][0] = -p #ポイント、大きいものから取り出したいのでマイナスにして入れる
  sushis[i][1] = t #種類

cnt_types = Counter() #寿司の種類覚えておく用のdict

sushis.sort(key=lambda x:x[0])

sushi_set = []
ans = 0
for p, t in sushis[:k]:
  #大きいものからk個選んで得点を計算
  ans += -p
  cnt_types[t] += 1
  sushi_set.append([p,t]) #集合を保存
  
ans += len(cnt_types) ** 2 #ネタ数＊ネタ数を加点

##ここまで貪欲選択


max_types = []
max_types.append(ans)
#max_types[len(cnt_types)] = ans
for p, t in sushis[k:]: #これまで選んでないものを選択した場合についてみていく
  if t in cnt_types:
    continue #選んでない種類のネタを選びたいので、すでに選んでるネタであれば何もせず飛ばす
  else:
    #選んだ寿司集合にある一番得点の低い寿司を、現在見ている新ネタの寿司と入れ替える
    #実際に入れ替えるとめんどくさい（計算量的にappendとかしんどい）ので、ansとcnt_typesをいじることで調整する

    while sushi_set:
      ps, ts = sushi_set.pop() #小さい順で取り出す
      if cnt_types[ts] >= 2:
        #そのネタが2個以上あるなら一個減らして新セットを作る
        tmp =  max_types[-1]- (-ps) + (-p) + 2*len(cnt_types) + 1
        max_types.append(tmp)
        cnt_types[t] += 1
        cnt_types[ts] -= 1
        break #次のまだ見ぬネタを探しに行く
        
#各種類選んだ最大値から最大のものを選択で終了
print(max(max_types))

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

n,k = map(int, input().split())

sushis = [[0 for _ in range(2)] for _ in range(n)]
cnt_sushi_type = {}
for i in range(n):
  t,p = map(int, input().split())
  sushis[i][0] = -p #ポイント、大きいものから取り出したいのでマイナスにして入れる
  sushis[i][1] = t #種類

cnt_types = Counter() #寿司の種類覚えておく用のdict

sushis.sort(key=lambda x:x[0])

sushi_set = []
ans = 0
for p, t in sushis[:k]:
  #大きいものからk個選んで得点を計算
  ans += -p
  cnt_types[t] += 1
  sushi_set.append([p,t]) #集合を保存
  
ans += len(cnt_types) ** 2 #ネタ数＊ネタ数を加点

##ここまで貪欲選択

#x種類選んだ時の最大値
max_types = [0] * n
max_types[len(cnt_types)] = ans
for p, t in sushis[k:]: #これまで選んでないものを選択した場合についてみていく
  if t in cnt_types:
    continue #選んでない種類のネタを選びたいので、すでに選んでるネタであれば何もせず飛ばす
  else:
    #選んだ寿司集合にある一番得点の低い寿司を、現在見ている新ネタの寿司と入れ替える
    #実際に入れ替えるとめんどくさい（計算量的にappendとかしんどい）ので、ansとcnt_typesをいじることで調整する

    while sushi_set:
      ps, ts = sushi_set.pop() #小さい順で取り出す
      if cnt_types[ts] >= 2:
        #そのネタが2個以上あるなら一個減らして新セットを作る
        tmp =  max_types[len(cnt_types)] - (-ps) + (-p) + 2*len(cnt_types) + 1
        max_types[len(cnt_types)+1] = tmp
        cnt_types[t] += 1
        cnt_types[ts] -= 1
        break #次のまだ見ぬネタを探しに行く
        
#各種類選んだ最大値から最大のものを選択で終了
print(max(max_types))
Problem p03231 (python)

Fixed submission:
import fractions

N, M = map(int, input().split())
S = input()
T = input()
gcd = fractions.gcd(N, M)
lcm = N*M // gcd
ans = lcm


for i in range(gcd):
    if S[i*N//gcd] != T[i*M//gcd]:
        ans = -1
        break 
    
print(ans)

Buggy submission (verdict: Runtime Error):
import fractions

N, M = map(int, input().split())
S = input()
T = input()

lcm = N*M // fractions.gcd(N, M)
ans = lcm

X = [""] * (lcm+10)

for i in range(N):
    X[i*lcm//N] = S[i]

for i in range(M):

    if X[i*lcm//M] != "":
        if X[i*lcm//M] != T[i]:
            ans = -1
            break
    
print(ans)

Buggy submission (verdict: Runtime Error):
import fractions

N, M = map(int, input().split())
S = input()
T = input()

lcm = N*M // fractions.gcd(N, M)
ans = lcm

X = [""] * lcm

for i in range(N):
    X[i*lcm//N] = S[i]

for i in range(M):

    if X[i*lcm//M] != "":
        if X[i*lcm//M] != T[i]:
            ans = -1
            break
    
print(ans)

Buggy submission (verdict: Runtime Error):
import fractions

N, M = map(int, input().split())
S = input()
T = input()

lcm = N*M // fractions.gcd(N, M)
ans = lcm

X = [""] * lcm

for i in range(N):
    X[i*lcm//N] = S[i]

for i in range(M):

    if X[i*lcm//M] != "":
        if X[i*lcm//M] != T[i]:
            ans = -1
            break
    
print(ans)
Problem p03240 (python)

Fixed submission:
n = int(input())

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

for Cx in range(101):
  for Cy in range(101):
    flag = True
    H = 0
    for data in datas:
      if data[2] != 0:
        #高さをあるデータから適当に決める
        H = data[2] + abs(data[0] - Cx) + abs(data[1] - Cy)
        break
        
    #直前で適当に決めた高さがほかのデータにも適合すればOK
    for data in datas:
      if data[2] != 0:
        if H != data[2] + abs(data[0] - Cx) + abs(data[1] - Cy):
          flag = False
          break
      else:
        #hi = 0ならH-abs(data[0] - Cx)-abs(data[1] - Cy)<= 0であるあず
        if H - abs(data[0] - Cx) - abs(data[1] - Cy) > 0:
          flag = False
          break
          
    if flag:
      print(Cx, Cy, H)

Buggy submission (verdict: Runtime Error):
N = int(input())

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

for cx in range(0, 101):
    for cy in range(0, 101):
        flag = True

        for i, (x,y,h) in enumerate(xyh):
            if h == 0:
                H = h + abs(x - cx) + abs(y - cy)

        for i, (x,y,h) in enumerate(xyh):
            if h == max(H - abs(x - cx) - abs(y - cy), 0):
                continue
            else:
                flag = False
                break
        if flag:
            print(cx, cy, H)
            exit()
Problem p03241 (python)

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

ans = 1

for i in range(1, int(m ** 0.5)+1):
  if m % i == 0:
    if i >= n:
      ans = max(ans, m // i)
    elif m // i >= n:
      ans = max(ans, i)
      
      
print(ans)

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

if M % N == 0:
    print(M//N)
    exit()


# そもそも素数だとだめなので、素数判定
pn = 2
is_prime = True
while pn*pn <= M:
    if M % pn == 0:
        #その数字以外のある数字で割り切れるので素数ではない
        is_prime = False
        break
    pn += 1


if is_prime == False:
    ans = 1
    for i in reversed(range(1, (M**0.5)+1)):
        # 最大公約数がiとする
        rest = M - (i * N)
        if (i+rest) % i == 0:
            ans = i
            break
else:
    if N == 1:
        ans = M
    else:
        ans = 1

print(ans)

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

i = 1
ans = 0
while i * i <= m:
  if m % i == 0:
    if i >= n:
      if i >= n:
        ans = max(ans, m // i)
      else m // i >= n:
        ans = max(ans(ans, i))
  
  
print(ans)

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

i = 1
ans = 0
while i * i <= m:
  if m % i == 0:
    if i >= n:
      if i >= n:
        ans = max(ans, m // i)
      else m // i >= n:
        ans = max(ans(ans, i))
  
  
print(ans)
Problem p03244 (python)

Fixed submission:
n = int(input())

a = list(map(int, input().split()))


dict_odd = {}
dict_even = {}

for i in range(n):
  #リストの奇数番目、０始まりなのであまりは０
  if i %2 == 0:
    dict_odd[a[i]] = dict_odd.get(a[i], 0) + 1
  else:
    dict_even[a[i]] = dict_even.get(a[i], 0) + 1
    
#print(dict_odd, dict_even)    

v_odd_sorted = sorted(dict_odd.values())
v_even_sorted = sorted(dict_even.values())

odd_sorted = sorted(dict_odd.items(), key=lambda x : x[1])
even_sorted = sorted(dict_even.items(), key=lambda x : x[1])

#print(v_odd_sorted, v_even_sorted)    
ans = 0
#数字が一種類しかない場合は、一方を置き換える必要がある
if len(set(a)) == 1:
  ans = sum(v_odd_sorted)
  #print(sum(v_odd_sorted))
else:
  #偶数列と奇数列について、書き換えた後が同じ数字なら成立しないので、一方の書き換える先を次に多い数字にする
  if odd_sorted[-1][0] == even_sorted[-1][0]:
    comp1 = ans = sum(v_odd_sorted[:-1]) + sum(v_even_sorted[:-2]) + v_even_sorted[-1]
    comp2 = ans = sum(v_even_sorted[:-1]) + sum(v_odd_sorted[:-2]) + v_odd_sorted[-1]
    ans = min([comp1, comp2])
    """
    if odd_sorted[-1][1] >= even_sorted[-1][1]:
      #偶数列を変更したほうが少ない場合
      ans = sum(v_odd_sorted[:-1]) + sum(v_even_sorted[:-2]) + v_even_sorted[-1]
    else:
      #奇数列を変更したほうが少ない場合
      ans = sum(v_even_sorted[:-1]) + sum(v_odd_sorted[:-2]) + v_odd_sorted[-1]
      """
  else:
    ans = sum(v_odd_sorted[:-1]) + sum(v_even_sorted[:-1])
print(ans)

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

a = list(map(int, input().split()))


dict_odd = {}
dict_even = {}

for i in range(n):
  #リストの奇数番目、０始まりなのであまりは０
  if i %2 == 0:
    dict_odd[a[i]] = dict_odd.get(a[i], 0) + 1
  else:
    dict_even[a[i]] = dict_even.get(a[i], 0) + 1
    
#print(dict_odd, dict_even)    

v_odd_sorted = sorted(dict_odd.values())
v_even_sorted = sorted(dict_even.values())

odd_sorted = sorted(dict_odd.items(), key=lambda x : x[1])
even_sorted = sorted(dict_even.items(), key=lambda x : x[1])

#print(v_odd_sorted, v_even_sorted)    
ans = 0
#数字が一種類しかない場合は、一方を置き換える必要がある
if len(set(a)) == 1:
  for i in range((n//2)-1):
    ans += odd_sorted[i][1]
  #print(sum(v_odd_sorted))
else:
  #偶数列と奇数列について、書き換えた後が同じ数字なら成立しないので、一方の書き換える先を次に多い数字にする
  if odd_sorted[-1][0] == even_sorted[-1][0]:
    if odd_sorted[-1][1] >= even_sorted[-1][1]:
      #偶数列を変更したほうが少ない場合
      ans = sum(v_odd_sorted[:-1]) + sum(v_even_sorted[:-2]) + v_even_sorted[-1]
    else:
      #奇数列を変更したほうが少ない場合
      ans = sum(v_even_sorted[:-1]) + sum(v_odd_sorted[:-2]) + v_odd_sorted[-1]
  else:
    ans = sum(v_odd_sorted[:-1]) + sum(v_even_sorted[:-1])
  #print(sum(v_odd_sorted[:-1]) + sum(v_even_sorted[:-1]))
print(ans)
Problem p03262 (python)

Fixed submission:
def gcd(a,b):
  if a < b:
    a, b = b, a
  while b:
    a, b = b, a % b
  return a

N, X = map(int, input().split())

x = list(map(int, input().split()))
x.append(X)
x.sort()


if len(x) == 2:
  tmp = (x[1] - x[0])
else:
  tmp = gcd((x[2] - x[1]), (x[1] - x[0]))
  for i in range(2, N):
    tmp = gcd(x[i+1] - x[i], tmp)

    
print(tmp)

Buggy submission (verdict: Runtime Error):
import math


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

A.append(X)
A.sort()

diff = []
for a,b in zip(A, A[1:]):
    diff.append(b-a)

ans = diff[0]
for i in range(1,len(diff)):
    ans = math.gcd(ans, diff[i])


print(ans)
Problem p03266 (python)

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

ans = 0
#ｋで割り切れるn以下の数のリスト
odd = [i for i in range(k, n+1, k)] #kから始まり、nまで、ｋ刻み
ans += len(odd) ** 3 #abcの選び方のため3乗

if k % 2 == 0:
  #k/2から始まり、nまでで、kで割ると余りがk/2になる
  even = [i for i in range(k//2, n+1, k)]
  ans += len(even) ** 3
  
print(ans)

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

ans = 0
#ｋで割り切れるn以下の数のリスト
odd = [i for i in range(k, n+1, k)] #kから始まり、nまで、ｋ刻み
ans += len(odd) ** 3 #abcの選び方のため3乗

if k % 2 == 0:
  #k/2から始まり、nまでで、kで割ると余りがk/2になる
  even = [i for i in range(k//2, n+1, k)]
  ans += even
  
print(ans)

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

ans = 0
#ｋで割り切れるn以下の数のリスト
odd = [i for i in range(k, n+1, k)] #kから始まり、nまで、ｋ刻み
ans += len(odd) ** 3 #abcの選び方のため3乗

if k % 2 == 0:
  #k/2から始まり、nまでで、kで割ると余りがk/2になる
  even = [i ofr i in range(k//2, n+1, k)]
  ans += even
  
print(ans)
Problem p03282 (python)

Fixed submission:
n = input()
k = int(input())


for i in range(len(n)):
  if i == k-1 or i == len(n)-1:
    print(n[i])
    exit()
  else:
    if n[i] != "1":
      print(n[i])
      exit()

Buggy submission (verdict: Runtime Error):
n = input()
k = input()


if len(n) == 1:
  print(n)
else:
  if k == "1":
    print(n[0])
  else:
    for i  in range(max(int(k), len(n))):
      if n[i] != "1":
        print(n[i])
        exit
      else:
        print(1)

Buggy submission (verdict: Runtime Error):
n = input()
k = input()


if n[0] == "1":
  print(n[1])
else:
  print(n[0])
Problem p03294 (python)

Fixed submission:
from functools import reduce


def gcd(a,b):
  x = max([a,b])
  y = min([a,b])
  while y:
    x, y = y, x % y
  return x

def lcm(x,y):
  return (x*y) // gcd(x,y)

def lcm_list(nums):
  return reduce(lcm, nums)
n = int(input())

a = list(map(int, input().split()))




m = lcm_list(a) - 1


ans = 0
for i in range(n):
  ans += m % a[i]
  
  
print(ans)

Buggy submission (verdict: Runtime Error):
import math
from functools import reduce

def lcm(x,y):
  return int((x*y) / math.gcd(x,y))

def lcm_list(nums):
  return reduce(lcm, nums)

n = int(input())
a = list(map(int, input().split()))
m = lcm_list(a) - 1
ans = 0
for i in range(n):
  ans += m % a[i]

print(ans)

Buggy submission (verdict: Runtime Error):
import math
from functools import reduce

def lcm(x,y):
  return (x*y) // math.gcd(x,y)

def lcm_list(nums):
  return reduce(lcm, nums)

n = int(input())
a = list(map(int, input().split()))
m = lcm_list(a) - 1
ans = 0
for i in range(n):
  ans += m % a[i]

print(ans)

Buggy submission (verdict: Runtime Error):
import math
from functools import reduce

def lcm(x,y):
  return (x*y) // math.gcd(x,y)

def lcm_list(nums):
  return reduce(lcm, nums)
n = int(input())

a = list(map(int, input().split()))




m = lcm_list(a) - 1


ans = 0
for i in range(n):
  ans += m % a[i]
  
  
print(ans)
Problem p03353 (python)

Fixed submission:
s = input()
k = int(input())
ans = []
for i in range(1,k+1):
  for j in range(len(s)):
    if j+i > len(s): break

    ans.append(s[j:j+i])


ans = list(sorted(set(ans))) #setはsortedではソートできる。リストでソートしてsetにすると順序は保証されない

if k != 1:
  print((ans[k-1]))
else:
  print(min(list(s)))

Buggy submission (verdict: Runtime Error):
s = input()
k = int(input())
ans = []
for i in range(1,len(s)):
  for j in range(len(s)):
    if j+i > len(s): break

    ans.append(s[j:j+i])

ans = list(sorted(set(ans))) #setはsortedではソートできる。リストでソートしてsetに帰ると順序は保証されない

print((ans[k-1]))
Problem p03475 (python)

Fixed submission:
n = int(input())
C = []
S = []
F = []
for i in range(n-1):
  c,s,f = map(int, input().split())
  C.append(c)
  S.append(s)
  F.append(f)  
  
for i in range(n):
  t = 0
  for j in range(i,n-1):
    if t < S[j]:
      t = S[j]
    elif t % F[j] == 0:
      pass#到着タイミングと発車タイミングが同じなので待ち時間0
    else:
      t = t + F[j] - (t % F[j])  
    t += C[j]
  print(t)

Buggy submission (verdict: Runtime Error):
n = int(input())
C = []
S = []
F = []
for i in range(n-1):
  c,s,f = map(int, input().split())
  C.append(c)
  S.append(s)
  F.append(f)  
  
for i in range(n):
  t = 0
  for j in range(i,n-1):
    if t < S[j]:
      t = S[j]
    elif t % F[j] == 0:
      ;#到着タイミングと発車タイミングが同じなので待ち時間0
    else:
      t = t + F[j] - (t % F[j])  
    t += C[j]
  print(t)
Problem p03476 (python)

Fixed submission:
max_num = 10**5+5
eratos_thenes_sieve = [0,0] + [1]*max_num
n = 2 #素数
while n*n <= max_num:
  if eratos_thenes_sieve[n]:#
    for i in range(2*n, max_num, n):
      eratos_thenes_sieve[i] = 0
  n += 1
  
isLike2017 = [0] * max_num
cumulativeSums = [0]
for i in range(max_num):
  if eratos_thenes_sieve[i] and eratos_thenes_sieve[(i+1)//2]:
    isLike2017[i] = 1
  cumulativeSums.append(cumulativeSums[-1] + isLike2017[i])
  
  
q = int(input())

for i in range(q):
  l, r = map(int, input().split())
  print(cumulativeSums[r+1] - cumulativeSums[l])

Buggy submission (verdict: Runtime Error):
max_num = 10**5+5
eratos_thenes_sieve = [0,0] + [1]*maxnum
n = 2 #素数
while n*n <= max_num:
  if eratos_thenes_sieve[n]:#
    for i in range(2*n, max_num, n):
      eratos_thenes_sieve[i] = 0
  n += 1
  
isLike2017 = [0] * max_num
cumulativeSums = [0]
for i in range(max_num):
  if eratos_thenes_sieve[i] and eratos_thenes_sieve[(i+1)//2]:
    isLike2017[i] = 1
  cumulativeSums.append(cumulativeSums[-1] + isLike2017[i])
  
  
q = int(input())

for i in range(q):
  l, r = map(int, input().split())
  print(cumulativeSums[r+1] - cumulativeSums[l])

Buggy submission (verdict: Runtime Error):
finished = [False] * 10**5
isPN = [False] * 10**5
def isPrimeNumber(num):
  if finished[num]:
    return isPN[num]
  
  if num == 1:
    return False
  pn = 2
  while pn * pn <= num:
    if num % pn == 0:
      finished[num] = True
      isPN[num] = False
      return isPN[num]
    pn += 1
  
  
  finished[num] = True
  isPN[num] = True
  return isPN[num]

n = int(input())

l = [0] * n
r = [0] * n
for i in range(n):
  l[i], r[i] = map(int, input().split())
  
  
for i in range(n):
  ans = 0
  for j in range(l[i], r[i]+1, 2):
    if isPrimeNumber(j) and isPrimeNumber((j+1)/2):
      ans += 1
      
  print(ans)
Problem p03480 (python)

Fixed submission:
s = input()



tmp = []
for i in range(len(s)-1):
        if s[i] != s[i+1]:
                tmp.append(max(i+1,len(s)-(i+1)))

if len(tmp) == 0:
        #元から全部同じ
        print(len(s))
else:
        print(min(tmp))

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

if len(s) == 1:


tmp = []
for i in range(len(s)-1):
        if s[i] != s[i+1]:
                tmp.append(max(i+1,len(s)-(i+1)))

if len(tmp) == 0:
        #元から全部同じ
        print(len(s))
else:
        print(min(tmp))

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

tmp = []
for i in range(len(s)-1):
        if s[i] != s[i+1]:
                tmp.append(max(i+1,len(s)-(i+1)))

print(max(tmp))
Problem p03550 (python)

Fixed submission:
"""
n=1の時、山札とＹの初期手札が答え
n>=2の時、
・Ｘは得点の最大化を狙う
・Ｙは得点の最小化を狙う＝Ｘの邪魔をする
山札内の得点の最大化をできるカードをＸが選んでも、Ｙはそれを邪魔する動きをとるので、真に最大化すること(Xの狙いを達成すること)はできない
→選べるのはＹの初期値＆山札最後（Ｘがすべて取る）か、最後とその一つ手前の比較（Ｘが一枚残してすべて取る）のどちらかにするのがましな選択



"""


n,x,y = map(int, input().split())

a = list(map(int, input().split()))

if n == 1:
        print(abs(a[-1] - y))
else:
        print(max(abs(y-a[-1]), abs(a[-1] - a[-2])))

Buggy submission (verdict: Runtime Error):
"""
n=1の時、山札とＹの初期手札が答え
n>=2の時、
・Ｘは得点の最大化を狙う
・Ｙは得点の最小化を狙う＝Ｘの邪魔をする
山札内の得点の最大化をできるカードをＸが選んでも、Ｙはそれを邪魔する動きをとるので、真に最大化すること(Xの狙いを達成すること)はできない
→選べるのはＹの初期値＆山札最後（Ｘがすべて取る）か、最後とその一つ手前の比較（Ｘが一枚残してすべて取る）のどちらかにするのがましな選択



"""


n,x,y = map(int, input().split())

a = list(map(int, input().split()))

if n == 1:
        print(abs(a[-1] - y))
else:
        print(max(abs(y-a[-1], abs(a[-1] - a[-2]))))
Problem p03569 (python)

Fixed submission:
S = input()


l = 0
r = len(S)-1
cnt = 0
while l < r:
    #print(l,r)
    if S[l] == S[r]:
        l += 1
        r -= 1
    else:
        if S[l] == "x":
            #末尾にxを追加し削除
            l += 1
            cnt += 1
        elif S[r] == "x":
            r -= 1
            cnt += 1
        else:
            print(-1)
            exit()


print(cnt)

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


l = 0
r = len(S)-1
cnt = 0
while l != r:
    if S[l] == S[r]:
        l += 1
        r -= 1
    else:
        if S[l] == "x":
            #末尾にxを追加し削除
            l += 1
            cnt += 1
        elif S[r] == "x":
            r -= 1
            cnt += 1
        else:
            print(-1)
            exit()


print(cnt)
Problem p03609 (python)

Fixed submission:
x,t= map(int, input().split())
print(max(x-t,0))

Buggy submission (verdict: Runtime Error):
x,t= map(int, input().split())
pritn(max(x-t,0))
Problem p03645 (python)

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

ship = {}

for i in range(m):
  a,b = (map(int, input().split()))
  if a == 1 or b == n:
    if a in ship: #keyにaがあるばあい
      ship[a].append(b)
    else:
      ship[a] = [b]

if 1 in ship:
  for i in ship[1]:
    if i in ship and n in ship[i]:
      print("POSSIBLE")
      exit()
      


  
  
print("IMPOSSIBLE")

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

ship = {}

for i in range(m):
  a,b = (map(int, input().split()))
  if a == 1 or b == n:
    if a in ship: #keyにaがあるばあい
      ship[a].append(b)
    else:
      ship[a] = [b]

        
for i in ship.keys():
  if n in ship[i]:
    print("POSSIBLE")
    exit()
  else:
    for j in ship[i]:
      if n in ship[j]:
        print("POSSIBLE")
        exit()
      

  
  
print("IMPOSSIBLE")
Problem p03646 (python)

Fixed submission:


K = int(input())
N = 50
# 最後の状態からさかのぼる
A = [49] * 50
# K を均等に割り振る（どれか一つを集中して選択しない）
for i in range(N):
    A[i] += K // 50
# 割り振った残りを、さらになるべく均等に割り振る
for i in range(K % N):
    A[i] += 51
    for j in range(N):
        A[j] -= 1

print(N)
print(*A)

Buggy submission (verdict: Runtime Error):


K = int(input())
N = 50
# 最後の状態からさかのぼる
A = [49] * 50
# K を均等に割り振る（どれか一つを集中して選択しない）
for i in range(N):
    A[i] += K // 50
# 割り振った残りを、さらになるべく均等に割り振る
for i in range(K // N):
    A[i] += 51
    for j in range(N):
        A[j] -= 1

print(N)
print(*A)
Problem p03651 (python)

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

A = list(map(int, input().split()))

A.sort()

if A[-1] < K:
    print("IMPOSSIBLE")
    exit()

if K in A or 1 in A:
    print("POSSIBLE")
    exit()

def gcd(a,b):
    x = max([a,b])
    y = min([a,b])
    while y:
        x, y = y, x % y
    return x

g = A[0]
for n in A[1:]:
    g = gcd(n, g)
    

print("POSSIBLE" if K % g == 0 else "IMPOSSIBLE")

Buggy submission (verdict: Runtime Error):

N,K = map(int, input().split())

A = list(map(int, input().split()))

A.sort()

if A[-1] < K:
    print("IMPOSSIBLE")
    exit()

if K in A or 1 in A:
    print("POSSIBLE")
    exit()

def gcd(a,b):
    x = max([a,b])
    y = min([a,b])
    while y:
        x, y = y, x % y
    return x

g = A[0]
for i in range(1,N):
    g = gcd(A[i], g)
    

print("POSSIBLE" ig K % g == 9 else "IMPOSSIBLE")
Problem p03659 (python)

Fixed submission:
n = int(input())

a = list(map(int, input().split()))

total = sum(a)
x = 0
ans = float("inf")
for i in range(n-1):
  x += a[i]
  y = total - x
  if(abs(x-y) < ans):
    ans = abs(x-y)
    
print(ans)

Buggy submission (verdict: Runtime Error):
#普通にやるとTLE
n = int(input())

a = list(map(int, input().split()))

total = sum(a)
ans = float("inf")
for i in range(n-1):
  x += a[i]
  y = total - x
  if(abs(x-y) < ans):
    ans = abs(x-y)
    
print(ans)