#include<bits/stdc++.h>
using namespace std;
int n,m,t,id,d,sum,res;
map<int,vector<int>> mp;
bool tag;
int main() {
ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
cin>>n>>m>>t;
while(m--)cin>>d>>id,mp[id].emplace_back(d);
for(auto& p:mp) {
if(p.second.size()<=2)continue;
auto &vec=p.second;
sort(vec.begin(),vec.end());
sum=2,tag=false;
for(int i=1; i<vec.size(); i++) {
if(vec[i]-vec[i-1]<=1)sum+=2;
else sum=max(0,sum-(vec[i]-vec[i-1]-1))+2;
if(sum>5)tag=true;
else if(sum<=3)tag=false;
}
sum=max(0,sum-(t-vec.back()));
if(sum<=3)tag=false;
if(tag)res++;
}
cout<<res;
return 0;
}
思路:
每间外卖店接受的订单按第几天顺序排好,数学一段段的处理,相邻订单差一天,同一天,都不用减1。