Buggy python submission (verdict: Time Limit Exceeded):

#AのリストにCのリストを加えて大きい順に並べ替えてNまでの和を求める
N,M = map(int,input().split())

#Aの入力
A_list = list(map(int,input().split()))

C_list = []

#Cのリストに追加する
for i in range(M):
    bi,ci = map(int,input().split())
    C_list.append([bi,ci])

#C_listをCの値でソート
C_list=sorted(C_list, reverse=True, key=lambda x:x[1])

count = 0
for bi,ci in C_list:
    count += bi
    #if count > N:
        #countがNより大きくなったらNより大きくなった分だけ使う
        #bi = N - count + bi
    A_list.extend([ci]*bi)

#A_Listを大きい順に並べ替える
A_list=sorted(A_list,reverse=True)

#N番目までの総和を求める
print(sum(A_list[0:N]))


Fixed submission:

#AのリストにCのリストを加えて大きい順に並べ替えてNまでの和を求める
N,M = map(int,input().split())

#Aの入力
A_list = list(map(int,input().split()))

C_list = []

#Cのリストに追加する
for i in range(M):
    bi,ci = map(int,input().split())
    C_list.append([bi,ci])

#C_listをCの値でソート
C_list=sorted(C_list, reverse=True, key=lambda x:x[1])

count = 0
for bi,ci in C_list:
    count += bi
    if count > N:
        #countがNより大きくなったらNより大きくなった分だけ使う
        bi = N - count + bi
    A_list.extend([ci]*bi)

#A_Listを大きい順に並べ替える
A_list=sorted(A_list,reverse=True)

#N番目までの総和を求める
print(sum(A_list[0:N]))

Buggy python submission (verdict: Time Limit Exceeded):

#AのリストにCのリストを加えて大きい順に並べ替えてNまでの和を求める

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

#Aの入力
A_list = list(map(int,input().split()))

#Aの末尾にCのリストを追加する
for i in range(M):
    bi,ci = map(int,input().split())
    for j in range(bi):
        A_list.append(ci)

#A_Listを大きい順に並べ替える
A_list=sorted(A_list,reverse=True)

#N番目までの総和を求める
print(sum(A_list[0:N]))


Fixed submission:

#AのリストにCのリストを加えて大きい順に並べ替えてNまでの和を求める
N,M = map(int,input().split())

#Aの入力
A_list = list(map(int,input().split()))

C_list = []

#Cのリストに追加する
for i in range(M):
    bi,ci = map(int,input().split())
    C_list.append([bi,ci])

#C_listをCの値でソート
C_list=sorted(C_list, reverse=True, key=lambda x:x[1])

count = 0
for bi,ci in C_list:
    count += bi
    if count > N:
        #countがNより大きくなったらNより大きくなった分だけ使う
        bi = N - count + bi
    A_list.extend([ci]*bi)

#A_Listを大きい順に並べ替える
A_list=sorted(A_list,reverse=True)

#N番目までの総和を求める
print(sum(A_list[0:N]))

Buggy python submission (verdict: Time Limit Exceeded):

#AのリストにCのリストを加えて大きい順に並べ替えてNまでの和を求める

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

#AとCをリストとして持つ
A_list = list(map(int,input().split()))

C_list = []

for i in range(M):
    bi,ci = map(int,input().split())
    for j in range(bi):
        C_list.append(ci)

#A_listにC_listを追加する
A_list.extend(C_list)

#A_Listを大きい順に並べ替える
A_list=sorted(A_list,reverse=True)

#N番目までの総和を求める
print(sum(A_list[0:N]))


Fixed submission:

#AのリストにCのリストを加えて大きい順に並べ替えてNまでの和を求める
N,M = map(int,input().split())

#Aの入力
A_list = list(map(int,input().split()))

C_list = []

#Cのリストに追加する
for i in range(M):
    bi,ci = map(int,input().split())
    C_list.append([bi,ci])

#C_listをCの値でソート
C_list=sorted(C_list, reverse=True, key=lambda x:x[1])

count = 0
for bi,ci in C_list:
    count += bi
    if count > N:
        #countがNより大きくなったらNより大きくなった分だけ使う
        bi = N - count + bi
    A_list.extend([ci]*bi)

#A_Listを大きい順に並べ替える
A_list=sorted(A_list,reverse=True)

#N番目までの総和を求める
print(sum(A_list[0:N]))

Buggy python submission (verdict: Time Limit Exceeded):

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

#Aは小さい順に並べる
A_list = list(map(int,input().split()))
A_list = sorted(A_list)
C_list = []

ans = 0

for i in range(M):
    bi,ci = map(int,input().split())
    for j in range(bi):
        C_list.append(ci)

C_list=sorted(C_list,reverse=True)

#NにたりないばあいはNまで1で埋める、Nより大きい場合はNまでを使う
if len(C_list) > N:
    C_list = C_list[0:N]
else:
    for i in range(N-len(C_list)):
        C_list.append(1)

#どこの添字からAとCが逆転するか調べる
for i in range(N):
    #Aは昇順、Cは降順
    if C_list[i] > A_list[i]:
        A_list[i] = C_list[i]
    else:
        break

print(sum(A_list))


Fixed submission:

#AのリストにCのリストを加えて大きい順に並べ替えてNまでの和を求める
N,M = map(int,input().split())

#Aの入力
A_list = list(map(int,input().split()))

C_list = []

#Cのリストに追加する
for i in range(M):
    bi,ci = map(int,input().split())
    C_list.append([bi,ci])

#C_listをCの値でソート
C_list=sorted(C_list, reverse=True, key=lambda x:x[1])

count = 0
for bi,ci in C_list:
    count += bi
    if count > N:
        #countがNより大きくなったらNより大きくなった分だけ使う
        bi = N - count + bi
    A_list.extend([ci]*bi)

#A_Listを大きい順に並べ替える
A_list=sorted(A_list,reverse=True)

#N番目までの総和を求める
print(sum(A_list[0:N]))

Buggy python submission (verdict: Time Limit Exceeded):

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

#Aは小さい順に並べる
A_list = list(map(int,input().split()))
A_list = sorted(A_list)
BC_list = []

ans = 0

for i in range(M):
    bi,ci = map(int,input().split())
    BC_list.append([bi,ci])

#BC_listからCの配列を作成する(大きい順)
C_list=[]
for i in range(M):
    for j in range(BC_list[i][0]):
        C_list.append(BC_list[i][1])
C_list=sorted(C_list,reverse=True)

#NにたりないばあいはNまで1で埋める、Nより大きい場合はNまでを使う
if len(C_list) > N:
    C_list = C_list[0:N]
else:
    for i in range(N-len(C_list)):
        C_list.append(1)

#どこの添字からAとCが逆転するか調べる
for i in range(N):
    #Aは昇順、Cは降順
    if C_list[i] > A_list[i]:
        A_list[i] = C_list[i]
    else:
        break

print(sum(A_list))


Fixed submission:

#AのリストにCのリストを加えて大きい順に並べ替えてNまでの和を求める
N,M = map(int,input().split())

#Aの入力
A_list = list(map(int,input().split()))

C_list = []

#Cのリストに追加する
for i in range(M):
    bi,ci = map(int,input().split())
    C_list.append([bi,ci])

#C_listをCの値でソート
C_list=sorted(C_list, reverse=True, key=lambda x:x[1])

count = 0
for bi,ci in C_list:
    count += bi
    if count > N:
        #countがNより大きくなったらNより大きくなった分だけ使う
        bi = N - count + bi
    A_list.extend([ci]*bi)

#A_Listを大きい順に並べ替える
A_list=sorted(A_list,reverse=True)

#N番目までの総和を求める
print(sum(A_list[0:N]))

Buggy python submission (verdict: Time Limit Exceeded):

 # print(sorted(a, key=itemgetter(1)))
N,M = map(int,input().split())

#Aは小さい順に並べる
A_list = list(map(int,input().split()))
A_list = sorted(A_list)
BC_list = []

ans = 0

for i in range(M):
    bi,ci = map(int,input().split())
    BC_list.append([bi,ci])

#BC_listからCの配列(長さはN)を作成する(大きい順)
C_list=[]
for i in range(M):
    for j in range(BC_list[i][0]):
        C_list.append(BC_list[i][1])

C_list=sorted(C_list,reverse=True)

#NにたりないばあいはNまで1で埋める、Nより大きい場合はNまでを使う
if len(C_list) > N:
    C_list = C_list[0:N]
else:
    for i in range(N-len(C_list)):
        C_list.append(1)

#どこの添字からAとCが逆転するか調べる
for i in range(N):
    #Aは昇順、Cは降順
    if C_list[i] > A_list[i]:
        A_list[i] = C_list[i]


print(sum(A_list))


Fixed submission:

#AのリストにCのリストを加えて大きい順に並べ替えてNまでの和を求める
N,M = map(int,input().split())

#Aの入力
A_list = list(map(int,input().split()))

C_list = []

#Cのリストに追加する
for i in range(M):
    bi,ci = map(int,input().split())
    C_list.append([bi,ci])

#C_listをCの値でソート
C_list=sorted(C_list, reverse=True, key=lambda x:x[1])

count = 0
for bi,ci in C_list:
    count += bi
    if count > N:
        #countがNより大きくなったらNより大きくなった分だけ使う
        bi = N - count + bi
    A_list.extend([ci]*bi)

#A_Listを大きい順に並べ替える
A_list=sorted(A_list,reverse=True)

#N番目までの総和を求める
print(sum(A_list[0:N]))

Buggy python submission (verdict: Time Limit Exceeded):
from operator import itemgetter

 # print(sorted(a, key=itemgetter(1)))
N,M = map(int,input().split())

#Aは小さい順に並べる
A_list = list(map(int,input().split()))
A_list = sorted(A_list)
BC_list = []

ans = 0
idx = 0

for i in range(M):
    bi,ci = map(int,input().split())
    BC_list.append([bi,ci])

#BC_listからCの配列(長さはN)を作成する(大きい順)
C_list=[]
BC_list = sorted(BC_list,reverse=True,key=itemgetter(1))
for i in range(M):
    for j in range(BC_list[i][0]):
        C_list.append(BC_list[i][1])

#NにたりないばあいはNまで0で埋める、Nより大きい場合はNまでを使う
if len(C_list) > N:
    C_list = C_list[0:N]
else:
    for i in range(N-len(C_list)):
        C_list.append(1)

#どこの添字からAとCが逆転するか調べる
for i in range(N):
    #Aは昇順、Cは降順
    if C_list[i] > A_list[i]:
        A_list[i] = C_list[i]


print(sum(A_list))


Fixed submission:

#AのリストにCのリストを加えて大きい順に並べ替えてNまでの和を求める
N,M = map(int,input().split())

#Aの入力
A_list = list(map(int,input().split()))

C_list = []

#Cのリストに追加する
for i in range(M):
    bi,ci = map(int,input().split())
    C_list.append([bi,ci])

#C_listをCの値でソート
C_list=sorted(C_list, reverse=True, key=lambda x:x[1])

count = 0
for bi,ci in C_list:
    count += bi
    if count > N:
        #countがNより大きくなったらNより大きくなった分だけ使う
        bi = N - count + bi
    A_list.extend([ci]*bi)

#A_Listを大きい順に並べ替える
A_list=sorted(A_list,reverse=True)

#N番目までの総和を求める
print(sum(A_list[0:N]))

Buggy python submission (verdict: Time Limit Exceeded):

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

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

ans = 0

for i in range(M):
    bi,ci = map(int,input().split())
    A_list=sorted(A_list)
    for j in range(bi):
        if A_list[j] < ci:
            A_list[j] = ci
        else :
            break

print(sum(A_list))


Fixed submission:

#AのリストにCのリストを加えて大きい順に並べ替えてNまでの和を求める
N,M = map(int,input().split())

#Aの入力
A_list = list(map(int,input().split()))

C_list = []

#Cのリストに追加する
for i in range(M):
    bi,ci = map(int,input().split())
    C_list.append([bi,ci])

#C_listをCの値でソート
C_list=sorted(C_list, reverse=True, key=lambda x:x[1])

count = 0
for bi,ci in C_list:
    count += bi
    if count > N:
        #countがNより大きくなったらNより大きくなった分だけ使う
        bi = N - count + bi
    A_list.extend([ci]*bi)

#A_Listを大きい順に並べ替える
A_list=sorted(A_list,reverse=True)

#N番目までの総和を求める
print(sum(A_list[0:N]))

Buggy python submission (verdict: Time Limit Exceeded):

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

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

ans = 0

for i in range(M):
    bi,ci = map(int,input().split())
    for j in range(bi):
        if min(A_list) < ci:
            A_list[A_list.index(min(A_list))] = ci

print(sum(A_list))


Fixed submission:

#AのリストにCのリストを加えて大きい順に並べ替えてNまでの和を求める
N,M = map(int,input().split())

#Aの入力
A_list = list(map(int,input().split()))

C_list = []

#Cのリストに追加する
for i in range(M):
    bi,ci = map(int,input().split())
    C_list.append([bi,ci])

#C_listをCの値でソート
C_list=sorted(C_list, reverse=True, key=lambda x:x[1])

count = 0
for bi,ci in C_list:
    count += bi
    if count > N:
        #countがNより大きくなったらNより大きくなった分だけ使う
        bi = N - count + bi
    A_list.extend([ci]*bi)

#A_Listを大きい順に並べ替える
A_list=sorted(A_list,reverse=True)

#N番目までの総和を求める
print(sum(A_list[0:N]))

Buggy python submission (verdict: Runtime Error):

import copy

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

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

B =[]
C =[]

tA = []
ans = sum(A)

for i in range(M):
    b,c = map(int,input().split())
    B.append(b)
    C.append(c)

for i in range(N):
    for j in range(M):
        tA = copy.copy(A)
        for k in range(B[j]):
            if tA[i] < C[k]:
                tA[i] = C[k]
        if sum(tA) > ans:
            ans = sum(tA)

print (ans)


Fixed submission:

#AのリストにCのリストを加えて大きい順に並べ替えてNまでの和を求める
N,M = map(int,input().split())

#Aの入力
A_list = list(map(int,input().split()))

C_list = []

#Cのリストに追加する
for i in range(M):
    bi,ci = map(int,input().split())
    C_list.append([bi,ci])

#C_listをCの値でソート
C_list=sorted(C_list, reverse=True, key=lambda x:x[1])

count = 0
for bi,ci in C_list:
    count += bi
    if count > N:
        #countがNより大きくなったらNより大きくなった分だけ使う
        bi = N - count + bi
    A_list.extend([ci]*bi)

#A_Listを大きい順に並べ替える
A_list=sorted(A_list,reverse=True)

#N番目までの総和を求める
print(sum(A_list[0:N]))

Buggy python submission (verdict: Runtime Error):

import copy

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

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

B =[]
C =[]

tA = []
ans = sum(A)

for i in range(M):
    b,c = map(int,input().split())
    B.append(b)
    C.append(c)

for i in range(N):
    for j in range(M):
        tA = copy.copy(A)
        for k in range(B[j]):
            if tA[i] < C[k]:
                tA[i] = C[k]
        if sum(tA) > ans:
            ans = sum(tA)

print (ans)


Fixed submission:

#AのリストにCのリストを加えて大きい順に並べ替えてNまでの和を求める
N,M = map(int,input().split())

#Aの入力
A_list = list(map(int,input().split()))

C_list = []

#Cのリストに追加する
for i in range(M):
    bi,ci = map(int,input().split())
    C_list.append([bi,ci])

#C_listをCの値でソート
C_list=sorted(C_list, reverse=True, key=lambda x:x[1])

count = 0
for bi,ci in C_list:
    count += bi
    if count > N:
        #countがNより大きくなったらNより大きくなった分だけ使う
        bi = N - count + bi
    A_list.extend([ci]*bi)

#A_Listを大きい順に並べ替える
A_list=sorted(A_list,reverse=True)

#N番目までの総和を求める
print(sum(A_list[0:N]))