codeforces 990
codeforces 990
今天算是好好见识了一把re梦

比赛时候一直找不到错哪了,也是因为今天生病了状态太差前面wa太多了浪费了太多时间,所以最后没时间检查了
void solve(){
int n;
cin >> n;
vector<ll> a(n);
for(int i = 0;i < n;i++){
cin >> a[i];
}
priority_queue<ll,vector<ll>,greater<>> pq;
deque<ll> q;
for(int i = 0;i < n;i++){
while(!q.empty()){
ll x = q.back();
if(a[i] < x){
q.pop_back();
pq.push(x);
}else break;
}
q.emplace_back(a[i]);
}
ll x = pq.top() + 1;
while(!q.empty()){
if(q.front() <= x){
cout << q.front() << " " ;
q.pop_front();
}else{
ll k = q.front();
pq.push(k);
q.pop_front();
}
}
while(!pq.empty()){
ll k = pq.top();
cout << k + 1<< " ";
pq.pop();
}
cout << nl;
}
这就很离谱,本来这题写得特别顺,我都不觉得我会有错,结果给我来了个runtime error
当赛后去查看错误的样例时
看不到很好
我百思不得其解,于是去问了问jiangly群的人
大多数人的第一反应都是数组越界了,然而我的代码除了存数据那块和数组都没什么关系
最后有个群u说top可能会出问题,于是我去查看,发现确实如此


在这个位置上加一个数组为空的情况下直接输出结果完美ac
谁也没想到最后运行错误的样例竟然是简单的
1 2 3 4 5 6 7 8...
查询战况

前面wa得太多了,说起来我确实很煞笔,b题wa了四发 纯纯脑残了,我大抵是病了
c的话是一开始想错了,我以为是上下两个数相加最大,wa了四发后才发现是取到另外一面的一个最大值,然后又wa了两发是因为mx没设置成-1e18,罚时超人,掉分掉完了,难得得本来能a四题最后因为罚时和re梦打出灰名表现分。

浙公网安备 33010602011771号