记录编号 |
602292 |
评测结果 |
AAAAAAAAAA |
题目名称 |
4166.遵循指令之意 |
最终得分 |
100 |
用户昵称 |
Hollow07 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
1.736 s |
提交时间 |
2025-07-03 15:12:49 |
内存使用 |
16.06 MiB |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll n,x,ousx,jisx;
ll a[1100000],b[1100000];
ll ous[1100000],jis[1100000],cnt1,cnt2;
ll C[1100000];
void a1(ll x,ll y){
for(;x<=n;x+=(x&-x)) C[x]+=y;
return;
}
ll a2(ll x){
ll cnt=0;
for(;x>0;x-=(x&-x)) cnt+=C[x];
return cnt;
}
ll a3(ll *z,ll ct){
ll ans=0;
for(int i=1;i<=ct;i++){
ans+=i-1-a2(z[i]);
a1(z[i],1);
}
for(int i=1;i<=ct;i++) a1(z[i],-1);
return ans;
}
int main() {
freopen("sort.in","r",stdin);
freopen("sort.out","w",stdout);
ios::sync_with_stdio(false);
cin>>n;
for (int i=1;i<=n;i++) {
cin>>a[i];
}
for (int i=1;i<=n;i++) {
if (i&1) jis[++cnt2]=a[i];
else ous[++cnt1]=a[i];
}
bool check=0;
if ((a3(ous,cnt1)&1)!=(a3(jis,cnt2)&1)) check=1;
sort(ous+1,ous+cnt1+1);
sort(jis+1,jis+cnt2+1);
for (int i=1;i<=n;i++) {
if (i&1) b[i]=jis[++jisx];
else b[i]=ous[++ousx];
}
if (check) swap(b[n],b[n-2]);
for (int i=1;i<=n;i++) {
cout<<b[i]<<" ";
}
return 0;
}