FZU 2184 逆序数还原

#include<cstdio>

#include<cstring>

#include<cmath>

#include<algorithm>

using namespace std;

int a[1005];

int b[1005];

int flag[1005];

int main()

{

    int i,j,n;

    while(~scanf("%d",&n))

    {

        memset(flag,0,sizeof(flag));

        for(i=1; i<=n; i++) scanf("%d",&a[i]);

        for(j=1; j<=n; j++)

        {

            int summ=0;

            for(i=1; i<=n; i++)

            {

                if(summ<a[j]&&flag[i]==0)summ++;



                else if(summ==a[j]&&flag[i]==0)

                {

                    flag[i]=1;

                    b[j]=i;

                    break;

                }

            }

        }

        for(i=1; i<=n; i++)

        {



            if(i<n) printf("%d ",b[i]);

            else printf("%d\n",b[i]);

        }

    }

    return 0;

}

 

你可能感兴趣的:(还原)