__zzh @ 2022-11-18 00:11:18
如果是下面这样写就是AC
#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
typedef pair<int,int> PII;
typedef long long ll;
const int INF=0x3f3f3f3f,mod=1e9+7;
priority_queue<int> q1;
priority_queue<int,vector<int>,greater<int> >q2;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n;
cin>>n;
int x;
cin>>x;
cout<<x<<endl;
q2.push(x);
for(int i=2;i<=n;i++)
{
cin>>x;
if(x>=q2.top()) q2.push(x);
else q1.push(x);/////////
if(q1.size()<q2.size())
{
int t=q2.top();
q2.pop();
q1.push(t);
}
if(q1.size()>q2.size()) {
int t=q1.top();
q1.pop();
q2.push(t);
}///////////
if(i%2==1) cout<<q2.top()<<endl;
}
return 0;
}
可是我把两个//////之间的if交换一下顺序 就不对了 为什么
#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
typedef pair<int,int> PII;
typedef long long ll;
const int INF=0x3f3f3f3f,mod=1e9+7;
priority_queue<int> q1;
priority_queue<int,vector<int>,greater<int> >q2;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n;
cin>>n;
int x;
cin>>x;
cout<<x<<endl;
q2.push(x);
for(int i=2;i<=n;i++)
{
cin>>x;
if(x>=q2.top()) q2.push(x);
else q1.push(x);//////这两个if顺序换了 其他都一样的
if(q1.size()>q2.size()) {
int t=q1.top();
q1.pop();
q2.push(t);
}
if(q1.size()<q2.size())
{
int t=q2.top();
q2.pop();
q1.push(t);
}/////////
if(i%2==1) cout<<q2.top()<<endl;
}
return 0;
}
by xuekaiwen_emmm @ 2023-01-02 21:12:54
emmm,不对是指WA还是别的什么(只是好奇,请不要对我这个蒟蒻抱有期待)