Cod sursa(job #2902754)

Utilizator Nicolae11Mihaila Nicolae Nicolae11 Data 16 mai 2022 19:34:15
Problema Order Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("order.in");
ofstream g("order.out");
int n,pas,k,aint[100000];
void build(int n,int st, int dr)
{   if(st==dr)
    {   aint[n]=1;
        return;
    }
    int mij=(st+dr)/2;
    build(n*2,st,mij);
    build(n*2+1,mij+1,dr);
    aint[n]=aint[n*2]+aint[n*2+1];
}

void update(int n,int st, int dr)
{   if(st==dr)
    {   aint[n]=0;
        g<<st<<' ';
        return;
    }
    int mij=(st+dr)/2;
    if(k<=aint[n*2])
        update(n*2,st,mij);
    else
    {   k=k-aint[n*2];
        update(2*n+1,mij+1,dr);
    }
    aint[n]--;

}
int main()
{   f>>n;
    build(1,1,n);
    pas=1;
    k=2;
    while(aint[1]!=0)
    {   k=k+pas-1;

        while(k>aint[1])
            k=k-aint[1];
        update(1,1,n);
        pas++;
    }
    return 0;
}