poj 2085 Inversion

poj 2085 Inversion,第1张

poj 2085 Inversion
#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;#define maxn 50005long long n, m;long long f[maxn];bool vis[maxn];int ar[maxn];void work(){    memset(vis, 0, sizeof(vis));    int x = n *(n -1) /2- m;    int p =-1;    for (int i =0; i < n; i++)    {        if (x >= n - i -1)        { f[i] = i +1; x -= n - i -1; vis[f[i]] =true;        }else        { p = i; break;        }    }    if (p ==-1)        return;    f[p] = n - x;    vis[f[p]] =true;    int s = n;    for (int i = p +1; i < n; i++)    {        while (vis[s]) s--;        vis[s] =true;        f[i] = s;    }}void print(){    printf("%lld", f[0]);    for (int i =1; i < n; i++)        printf(" %lld", f[i]);    putchar('n');}int main(){     while (scanf("%lld%lld", &n, &m), !(n ==-1&& m ==-1))    {        work();        print();    }    return 0;}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/4907317.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-12
下一篇2022-11-12

发表评论

登录后才能评论

评论列表(0条)

    保存