題目描述
”飽了么”外賣系統中維護著N 家外賣店,編號1~N。每家外賣店都有一個優先級,初始時(0時刻)優先級都為0。
每經過1個時間單位,如果外賣店沒有訂單,則優先級會減少1,最低減到0;而如果外賣店有訂單,則優先級不減反加每有一單優先級加2。
如果某家外賣店某時刻優先級大于 5,則會被系統加入優先緩存中;如果優先級小于等于3,則會被清除出優先緩存
給定T時刻以內的M條訂單信息,請你計算T時刻時有多少外賣店在優先緩存中?
輸入描述
第一行包含3個整數N,M,T
以下M 行每行包含兩個整數 ts,id,表示ts 時刻編號id的外賣店收到一個訂單。
其中,1<N,M,T<105,1< ts < T,1<id<N
輸出描述
輸出一個整數代表答案
import os
import sys# 請在此輸入您的代碼
n,m,t=map(int,input().split())#訂單
orders=[]#輸入訂單
for i in range(m):order=list(map(int,input().split()))orders.append(order) #[[1,1],[5,2].....]#根據時間排序
orders.sort(key=lambda a : a[0])#創建優先級,時間,優先級緩存標志初始列表
priors=[0 for i in range(n)]
times=[0 for i in range(n)]
flags=[0 for i in range(n)]#對所有訂單遍歷
for i in range(m):time=orders[i][0] #訂單的時間id=orders[i][1]-1 #將id(外賣店編號)也變成從0開始#如果訂單時間與上一刻時間不同,優先級減少if time !=times[id]:priors[id]-=time-times[id]-1 #-1原因:不包括當前時刻,從3時刻到5時刻,只有經過4時刻優先級減少if priors[id]<0:priors[id]=0if priors[id]<=3:flags[id]=0#接到訂單優先級+2priors[id]+=2if priors[id]>5:flags[id]=1#時間替換times[id]=time#對后面沒有訂單時間優先級計算
for i in range(n):if times[i] != t:priors[i]-=t-times[i]if priors[i]<0:priors[i]=0if priors[i]<=3:flags[i]=0print(sum(flags))