令人揪心的代码
#include<iostream>
using namespace std;
struct ruck{
int Place;//石头位置
int Flag;//是否来过
}R[100005];
int N,M,S,Min,F,A[100005],E;
int main(){
cin>>N>>M>>S;
R[0].Place=0;
R[M+1].Place=N;
for(register int i=1;i<=M;i++) cin>>R[i].Place;
int L=0,N1=0;
while(1){//到河对岸
while(R[L].Place-R[N1].Place<S){
if(L>=M+1){//如果过不去就……
cout<<"NO";
return 0;
}
L++;
}
N1=L;
A[E++]=N1;
R[N1].Flag=1;
if(N1>=M+1) break;
}
while(1){//回来
while(R[N1].Place-R[L].Place<S||R[L].Flag){
if(L<=0){//如果回不来就……
cout<<"NO";
return 0;
}
L--;
}
N1=L;
A[E++]=N1;
R[N1].Flag=1;
if(N1>=0) break;
}
for(register int i=1;i<=M;i++)
if(R[i].Flag==0){//是否跑完
cout<<"NO";
return 0;
}
cout<<"YES\n";
for(register int i=0;i<E;i++) cout<<A[i]<<" ";
return 0;
}
麻烦大佬们查一查错