现场这题写的好挫最后也没调絀来,今天改良了一下代码找到了BUG,终于AC了~
我深深的SB了好久这题是队名字典序大的排前面Orz....
简单回顾下题意,给出N个(N<=50000)个提交包括队名,题目时间,返回然后让你输出比赛结束封榜状态下的榜,滚board的过程和最终榜
首先5W个提交暴力撸是不行了需要set优化一下
我们先封装┅个Team结构体,包括队名解题数,罚时什么的然后对于每个题目,记录ac时间封榜前(后)是否通过,封榜前no的数量封榜后的提交数,和總的no的数量
然后重载一下<运算符用索引扔到set里面,每次从最后面取出一支队并删掉对这个队relax一下,就是处理当前的第一个pending我用了一個vector存的
处理之后就可以看看插回去的时候他在哪,如果不是最后一名了就说明rank有变化
同时如果取出的队伍pending.size()为0,就说明这个队已经没有pending了直接从set里删掉就好
现场的时候脑残没写索引,华丽丽的TLE了这种结构体里面元素多的时候还是直接上索引吧
另外提交不是按时间给出的,也要先读入再排一下序
最后我把一个队交题(add)和处理pending(relax)都封装在Team结构体里面了这样代码清晰了很多
具体的细节可以参考代码