#33153: 記憶體錯誤到底怎麼解決


wrr606@gmail.com (Function)

學校 : 國立金門大學
編號 : 133433
來源 : [59.120.127.181]
最後登入時間 :
2024-10-22 14:45:37
a941. 10041 - Vito's large family -- UVa10041 | From: [1.172.147.19] | 發表日期 : 2022-12-05 23:59

import math
n=int(input())
for i in range(n):
    fristnum=int(input())
    x=list(map(int,input().split()))
    x.sort()
    if(fristnum%2==0):
        y=(x[int(fristnum/2)]+x[int(fristnum/2-1)])/2
        if(y-x[int(fristnum/2-1)]!=0):
            y=x[int(fristnum/2-1)]
    elif(fristnum%2!=0):
        y=x[int((fristnum-1)/2)]
    counter=0#1 2 5 999
    for j in range(fristnum):
        counter+=abs(y-x[j])
    print(int(counter),y)
 
題目RE
您的程式被監控系統中斷,可能是程式無法正常結束所導致。
Traceback (most recent call last):
  File "/10802423/code_10802423.py", line 5, in 
    x=list(map(int,input().split()))
MemoryError
 
#33154: Re: 記憶體錯誤到底怎麼解決


sponge (qd)

學校 : 不指定學校
編號 : 21007
來源 : [114.42.180.252]
最後登入時間 :
2024-05-17 15:52:20
a941. 10041 - Vito's large family -- UVa10041 | From: [1.168.32.110] | 發表日期 : 2022-12-06 14:32

 

這題的記憶體限制是 64 MB
測資中有一列大小是 100000 個,
你用 split 切開來已經超過限制了,
這裡有很多題都有這種情況。

有幾種方法可以克服種問題
1) import array (keyword: python list array memory usage)
2) split 有一個參數, 可以一次不要全分割
   s = stdin.readline().split(' ', k)
   藉著調整 k 值,慢慢處理測資。
    



 
ZeroJudge Forum