萌新在做题的时候写了
dmax[++dpos]=max(dmax[dpos-1],x);
WA 了 0 pts;
但是换成:
dpos++;
dmax[dpos]=max(dmax[dpos-1],x);
就 AC 了,请问有区别吗?
还有在这题中我用了这种做法:
#include <bits/stdc++.h>
using namespace std;
map <int,int> mp;
stack<int> s;
priority_queue<int> q;
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
int op,x;
cin>>op;
if(op==0)
{
cin>>x;
s.push(x);
q.push(x);
mp[x]++;
}
if(op==1&&!s.empty())
{
mp[s.top()]--;
s.pop();
}
if(op==2)
{
while(mp[q.top()]==0&&!q.empty())
q.pop();
if(q.empty()) cout<<0<<"\n";
else cout<<q.top()<<"\n";
}
}
}
理应最坏 O(n2) 跑不过,这里却奇迹跑过了,为什么,是数据水吗?