96求助
  • 板块P4753 River Jumping
  • 楼主JenF
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/10/2 17:28
  • 上次更新2023/11/2 16:31:32
查看原帖
96求助
807667
JenF楼主2023/10/2 17:28
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+10;
int n,m,s,w[N],mapp[N];
signed main(){
	cin>>n>>m>>s;
	for(int i=1;i<=m;i++){
		cin>>w[i];
		mapp[w[i]]=1;
	}
	if(m!=0&&(w[1]<s||(n-w[m])<s)){
		cout<<"NO";
		return 0;
	}
	if(m!=0){
		for(int i=3;i<=m;i++){
			if(w[i]-w[i-2]<s){
				cout<<"NO";
				return 0;
			} 
		}
	}
	
	cout<<"YES"<<endl;
	mapp[0]=1;
	mapp[n]=1;
	w[0]=0;
	w[m+1]=n;
	int cur=0;
	for(int i=1;i<=m+1;i++){
		if(mapp[w[i]]!=0&&w[i]-cur>=s){
			mapp[w[i]]=0;
			cur=w[i];
			cout<<i<<' ';
		}
	}
	if (cur!=w[m+1]){
        cout<<"NO";
        return 0;
    }
	for(int i=m;i>=0;i--){
		if(mapp[w[i]]!=0&&cur-w[i]>=s){
			mapp[w[i]]=0;
			cur=w[i];
			cout<<i<<' ';
		}
	}
	return 0;
}
2023/10/2 17:28
加载中...