给原排列 求 其前面有多少个数比他大,
给每个数1...2..n前面有多少个数比他大,求原序列
第一个直接统计
第二个从1开始找出第inv【i】+1个空位置放进去就好
printf里的format 原来可以用if表达式 - -
#include <bits/stdc++.h>
using namespace std;
int n;
void Gao()
{
int a[100],b[100]={0};
char ch;
getchar();
ch=getchar();
if (ch=='P')
{
for (int i=0;i<n;i++)
scanf("%d",a+i);
for (int i=0;i<n;i++)
for (int j=0;j<i;j++)
if (a[i]<a[j])
b[a[i]]++;
for (int i=0;i<n;i++)
printf(i==0?"%d":" %d",b[i+1]);
cout<<endl;
}
else
{
for (int i=0;i<n;i++)
scanf("%d",a+i);
for (int i=0;i<n;i++)
{
int need=0;
for(int j=0;j<n;j++)
{
if (b[j]==0) need++;
if ((need==(a[i]+1))&&(b[j]==0))
{
b[j]=i+1;
break;
}
}
}
for (int i=0;i<n;i++)
printf(i==0?"%d":" %d",b[i]);
cout<<endl;
}
}
int main()
{
// freopen("a.in","r",stdin);
while (cin>>n && n)
Gao();
return 0;
}