wall leg 20分
查看原帖
wall leg 20分
836448
stylus楼主2024/7/9 10:12

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;
}
2024/7/9 10:12
加载中...