#include<bits/stdc++.h> using namespace std; int n,m; struct node { int id; int slove; int pen; bool operator<(const node &b)const { //如果解决的数量和罚时都一样,就按照序号排序 if(slove==b.slove&&pen==b.pen) return id<b.id; //如果解决的数目不一样,就优先按照数目排序 if(slove!=b.slove) return slove>b.slove; //再按照罚时排序 return pen<b.pen; } } a[200000]; set<node>s; int main() { cin>>n>>m; for (int i=1; i<=n; i++) a[i].id=i; for (int i=1; i<=m; i++) { int l,r; scanf("%d%d",&l,&r); //删去,更新 s.erase(a[l]); //解决数目++ a[l].slove++; //罚时增加 a[l].pen+=r; //如果更新的是第一个队 if(l==1) { while (!s.empty()&& (a[1] < ( *(--s.end()) ))) s.erase(--s.end()); } else { if(a[l]<a[1]) s.insert(a[l]); } cout<<s.size()+1<<endl; } }
原文地址:https://www.cnblogs.com/QingyuYYYYY/p/12349642.html
时间: 2024-10-22 04:54:07