题解
2025-06-27 14:30:08
发布于:北京
5阅读
0回复
0点赞
#include<queue>
#include<map>
#include<functional>
#include<vector>
#include<iostream>
#include<stdio.h>
using namespace std;
priority_queue<int,vector<int>,greater<int> > moment[100001];
int store[100001]={0};
int main()
{
int n,m,t,ts,id;
cin>>n>>m>>t;
for(int i=0;i<m;i++)
{
cin>>ts>>id;
moment[ts].push(id);
}
int pri=0;
map<int,int> a;
for(int i=1;i<=t;i++)
{
pri++;
int pre,cou;
while(!moment[i].empty())
{
pre=moment[i].top();cou=0;
while(!moment[i].empty()&&pre==moment[i].top())
{
cou++;
moment[i].pop();
}
store[pre]=store[pre]<pri?pri+2cou:store[pre]+2cou+1;
if(store[pre]-pri>5)
{
a[pre]=store[pre];
}
}
for(map<int,int>::iterator it=a.begin();it!=a.end();)
{
if(it->second-pri<=3) a.erase(it++);
else it++;
}
}
cout<<a.size()<<endl;
return 0;
}
全部评论 1
.
2025-06-28 来自 北京
0
有帮助,赞一个