pythonでアルゴリズムとデータ構造を書く キュー
4.3 キュー
class Queue:
def __init__(self,size =100005):
self.size = size
head = tail = 0
def next(self,n):
return(n +1) % self.size
def enqueue(self,x,y):
P.append*1
Queue.tail = (Queue.tail + 1) % self.size
def dequeue(self):
#print(Queue.head)
x = P[Queue.head]
Queue.head = (Queue.head + 1) % self.size
return x
#プロセスの個数nと処理時間qを格納
n,q = map(int, input().split())
#Pにプロセスの列を格納
P = []
for x in range(1,n+1):
name,t =input().split()
P.append((name, int(t)))
#シュミュレーション
p = Queue()
Queue.head = 0
Queue.tail = n
elaps = 0
while Queue.head != Queue.tail:
#dequeueでプロセスの値を取得してuに格納
u = p.dequeue()
#print(u[1])
#処理時間qとプロセスの時間を比較して小さい方を取得
c = min(u[1],q)
t2 = u[1] - c
#print(t2)
#処理時間elapsを加算
elaps = elaps + c
#t2(プロセスの時間 - 処理時間q)が0以上ならキューの末尾に追加、そうでないなら出力
if t2 > 0:
p.enqueue(u[0],t2)
else:
print(u[0] ,end=" "),
print(elaps)
Cも別に詳しいわけではないので、
Cにてどのような実装なのか理解する⇒Pythonでの実装を考える
ってとこが大変
*1:x, y