#include<bits/stdc++.h>
using namespace std;
int chupai[20010];
int pai[20010];
int a[200010];
map<long long int ,long long int > mp;
int N=1e9;
int main()
{
int n;
cin>>n;
int cnt=0;
for(int i=0;i<n;i++)
{
cin>>a[i];
if(mp[a[i]+N]==0)
{
int l=0,r=cnt,best=cnt+1;
while(l<=r)
{
int mid=(l+r)/2;
if(chupai[mid]>a[i])
{
best=mid;
r=mid-1;
}
else
{
l=mid+1;
}
}
/*for(int j=0;j<=cnt;j++)
{
if(chupai[j]>a[i])
{
w=j;
break;
}
}*/
for(int j=cnt+1;j>best;j--)
{
chupai[j]=chupai[j-1];
}
chupai[best]=a[i];
cnt++;
}
mp[a[i]+N]++;
}
int sum=0;
for(int i=0;i<=cnt;i++)
{
for(int j=0;j<mp[chupai[i]+N];j++)
{
cout<<chupai[i]<<" ";
}
}
}
外网排序题