RE2,WA6,AC2->没判零
RE2,WA6,AC1->判零
??? WTF
判零:
#include<bits/stdc++.h>
using namespace std;
struct node{
int x,id;
bool operator<(const node&a)const{
return x<a.x;
}
};
int n,q,p,_,nx;
string s;
priority_queue<node>a;
int main(){
cin>>n>>q>>p;
for(int i=1;i<=n;i++)cin>>_,a.push({_-(i==p||i==q),i});
s+=to_string(q)+" ",nx=q;
while(a.size()){
node f,tp;
f=a.top();a.pop();
if(f.id==nx)tp=f,f=a.top(),a.pop(),a.push(tp);
s+=to_string(f.id)+" ";
nx=f.id,f.x--;
if(f.x)a.push(f);
}s+=to_string(p);
for(int i=0;i<s.size()-1;i++)
if(s[i]==s[i+1]){
cout<<"0";
return 0;
}
cout<<s;
return 0;
}
不判:
#include<bits/stdc++.h>
using namespace std;
struct node{
int x,id;
bool operator<(const node&a)const{
return x<a.x;
}
};
int n,q,p,_,nx;
string s;
priority_queue<node>a;
int main(){
cin>>n>>q>>p;
for(int i=1;i<=n;i++)cin>>_,a.push({_-(i==p||i==q),i});
s+=to_string(q)+" ",nx=q;
while(a.size()){
node f,tp;
f=a.top();a.pop();
if(f.id==nx)tp=f,f=a.top(),a.pop(),a.push(tp);
s+=to_string(f.id)+" ";
nx=f.id,f.x--;
if(f.x)a.push(f);
}s+=to_string(p);
for(int i=0;i<s.size()-1;i++)
if(s[i]==s[i+1]){
cout<<"0";
return 0;
}
cout<<s;
return 0;
}