求助!为什么加优先级的位置稍作修改答案会不一样
查看原帖
求助!为什么加优先级的位置稍作修改答案会不一样
525657
CYJ_2002112108楼主2024/4/7 13:19
#include <bits/stdc++.h>
using namespace std;

const int maxn = 1e5+10;
int n, m, t;
struct node{
	int ts, id;
};
node wm[maxn];
bool cmp(node x, node y){
	if(x.id!=y.id) return x.id<y.id;
	return x.ts<y.ts;
}
vector<int> p[maxn];
int main(){
	int i, j, k, tmp, ans=0, ID;
	bool flag;
	cin >> n >> m >> t;
	for(i=1; i<=m; i++)
		cin >> wm[i].ts >> wm[i].id;
	sort(wm+1, wm+m+1, cmp);
	for(i=1; i<=m;){
		ID = wm[i].id;
		p[ID].push_back(wm[i].ts);
		while(wm[++i].id==ID)
			p[ID].push_back(wm[i].ts);
		for(j=1, tmp=2, flag=false; j<p[ID].size(); j++){
			if(p[ID][j]!=p[ID][j-1]) tmp-=p[ID][j]-p[ID][j-1]-1;
			if(tmp<0) tmp=0;
			if(tmp<=3) flag=false;
			tmp+=2;
			if(tmp>5) flag=true;
		}
		if(flag){
			if(t!=p[ID][j-1])
				tmp-=t-p[ID][j-1];
			if(tmp>3)
				ans++;
		}
	}
	cout << ans << endl;
}
2024/4/7 13:19
加载中...