【FZU 2184】 逆序数还原

【FZU 2184】 逆序数还原

已知数列中i位置的数所含的逆序对数 数列由1~n组成 输出序列

n<=1000 暴力即可 vis数组表示第i数是否已被用 每读一个数x 表示该数后还有x个数比他小 只需输出未被用的数中第x+1小的数即可 每次暴力跑一下


代码如下:

#include 
#include 
#include 

using namespace std;

bool vis[1001];

int main()
{
    int n,x,cnt,b,i;
    while(~scanf("%d",&n))
    {
        memset(vis,0,sizeof(vis));
        for(i = 0; i < n; ++i)
        {
            if(i) printf(" ");
            scanf("%d",&x);
            for(b = 0,cnt = 0; cnt <= x; ++b)
                if(!vis[b+1]) cnt++;

            printf("%d",b);
            vis[b] = 1;
        }
        puts("");
    }
    return 0;
}




你可能感兴趣的:(FZUOJ)