Buggy python submission (verdict: Time Limit Exceeded):
def bubbleSort(A):
	cnt=0
	for i in range(len(A)):
		for j in range(len(A)-1,i,-1):
			if A[j]<A[j-1]:
				A[j],A[j-1]=A[j-1],A[j]
				cnt+=1
	return cnt

n=int(input())
A=list(map(int,input().split()))
print(bubbleSort(A))



Fixed submission:
global cnt
cnt=0

def merge(A,left,mid,right):
    L=A[left:mid]
    R=A[mid:right]
    L.append(float("inf"))
    R.append(float("inf"))
    
    i=0
    j=0
    for k in range(left,right):
        global cnt
        if L[i]<=R[j]:
            A[k]=L[i]
            i=i+1
        else:
            A[k]=R[j]
            j=j+1
            cnt+=mid-left-i

def mergeSort(A,left,right):
    if left+1<right:
        mid=(int)((left+right)/2)
        mergeSort(A,left,mid)
        mergeSort(A,mid,right)
        merge(A,left,mid,right)

n=int(input())
S=list(map(int,input().split()))

mergeSort(S,0,n)
print(cnt)

Buggy python submission (verdict: Runtime Error):
def shakerSort(A):
	cnt=0
	left=0
	right=len(A)-1
	while left<right:
		for i in range(left,right):
			if A[i]>A[i+1]:
				A[i],A[i+1]=A[i+1],A[i]
				sh=i
				cnt+=1
		right=sh
		for j in range(right,left,-1):
			if A[j]<A[j-1]:
				A[j],A[j-1]=A[j-1],A[j]
				sh=j
				cnt+=1
		left=sh
	return cnt

n=int(input())
A=list(map(int,input().split()))
print(shakerSort(A)


Fixed submission:
global cnt
cnt=0

def merge(A,left,mid,right):
    L=A[left:mid]
    R=A[mid:right]
    L.append(float("inf"))
    R.append(float("inf"))
    
    i=0
    j=0
    for k in range(left,right):
        global cnt
        if L[i]<=R[j]:
            A[k]=L[i]
            i=i+1
        else:
            A[k]=R[j]
            j=j+1
            cnt+=mid-left-i

def mergeSort(A,left,right):
    if left+1<right:
        mid=(int)((left+right)/2)
        mergeSort(A,left,mid)
        mergeSort(A,mid,right)
        merge(A,left,mid,right)

n=int(input())
S=list(map(int,input().split()))

mergeSort(S,0,n)
print(cnt)

Buggy python submission (verdict: Runtime Error):
def shakerSort(A):
	cnt=0
	left=0
	right=len(A)-1
	while left<right:
		for i in range(left,right):
			if A[i]>A[i+1]:
				A[i],A[i+1]=A[i+1],A[i]
				sh=i
				cnt+=1
		right=sh
		for j in range(right,left,-1):
			if A[j]<A[j-1]:
				A[j],A[j-1]=A[j-1],A[j]
				sh=j
				cnt+=1
		left=sh
	return cnt

n=int(input())
A=list(map(int,input().split()))
print(shakerSort(A))


Fixed submission:
global cnt
cnt=0

def merge(A,left,mid,right):
    L=A[left:mid]
    R=A[mid:right]
    L.append(float("inf"))
    R.append(float("inf"))
    
    i=0
    j=0
    for k in range(left,right):
        global cnt
        if L[i]<=R[j]:
            A[k]=L[i]
            i=i+1
        else:
            A[k]=R[j]
            j=j+1
            cnt+=mid-left-i

def mergeSort(A,left,right):
    if left+1<right:
        mid=(int)((left+right)/2)
        mergeSort(A,left,mid)
        mergeSort(A,mid,right)
        merge(A,left,mid,right)

n=int(input())
S=list(map(int,input().split()))

mergeSort(S,0,n)
print(cnt)

Buggy python submission (verdict: Time Limit Exceeded):
def shakerSort(A):
	cnt=0
	left=0
	sh=0
	right=len(A)-1
	while left<right:
		for i in range(left,right):
			if A[i]>A[i+1]:
				A[i],A[i+1]=A[i+1],A[i]
				sh=i
				cnt+=1
		right=sh
		for j in range(right,left,-1):
			if A[j]<A[j-1]:
				A[j],A[j-1]=A[j-1],A[j]
				sh=j
				cnt+=1
		left=sh
	return cnt

n=int(input())
A=list(map(int,input().split()))
print(shakerSort(A))


Fixed submission:
global cnt
cnt=0

def merge(A,left,mid,right):
    L=A[left:mid]
    R=A[mid:right]
    L.append(float("inf"))
    R.append(float("inf"))
    
    i=0
    j=0
    for k in range(left,right):
        global cnt
        if L[i]<=R[j]:
            A[k]=L[i]
            i=i+1
        else:
            A[k]=R[j]
            j=j+1
            cnt+=mid-left-i

def mergeSort(A,left,right):
    if left+1<right:
        mid=(int)((left+right)/2)
        mergeSort(A,left,mid)
        mergeSort(A,mid,right)
        merge(A,left,mid,right)

n=int(input())
S=list(map(int,input().split()))

mergeSort(S,0,n)
print(cnt)