#include<bits/stdc++.h>
using namespace std;
int main(){
int a;
cin>>a;
if(a==1)cout<<"1";
if(a==0)cout<<"0";
if(a==2)cout<<"1 2";
if(a==3)cout<<"1 2 3";
if(a==4)cout<<"1 4 2 3";
if(a==5)cout<<"1 5 2 3 4";
if(a==6)cout<<"1 6 2 4 3 5";
if(a==7)cout<<"1 7 2 5 4 3 6";
if(a==8)cout<<"1 8 2 6 4 5 3 7";
return 0;
}
#include<bits/stdc++.h>
#define maxx 1000010
using namespace std;
int ans[maxx];
int main(){
int n;
cin>>n;
int mid;
if(n%2==0)mid=n/2;
else mid=n/2+1;
ans[1]=1;
ans[2]=n-1;
ans[n]=n;
ans[n-1]=2;
int l=2,r=n-1;
if(n==2){
cout<<1<<" "<<2;
return 0;
}
if(n==3){
cout<<1<<" "<<2<<" "<<3;
return 0;
}
if(n%2==0){
while(r-l>1){
int flag_l=0;
int flag_r=0;
if(ans[l]>mid){
ans[++l]=n+2-ans[l-1];
flag_l=1;
}
if(ans[l]<mid&&flag_l==0){
ans[++l]=n-ans[l-1];
}
if(ans[r]>mid){
ans[--r]=n+2-ans[r+1];
flag_r=1;
}
if(ans[r]<mid&&flag_r==0){
ans[--r]=n-ans[r+1];
}
}
}
if(n%2==1){
while(r-l>2){
int flag_l=0;
int flag_r=0;
if(ans[l]>mid){
ans[++l]=n+2-ans[l-1];
flag_l=1;
}
if(ans[l]<mid&&flag_l==0){
ans[++l]=n-ans[l-1];
}
if(ans[r]>mid){
ans[--r]=n+2-ans[r+1];
flag_r=1;
}
if(ans[r]<mid&&flag_r==0){
ans[--r]=n-ans[r+1];
}
}ans[mid]=mid;
}
cout<<ans[1]<<" ";
for(int i=n;i>=2;i--)cout<<ans[i]<<" ";
return 0;
}
蒟蒻自己实在是想不通,求助大佬。