Cod sursa(job #2903926)

Utilizator elenaa_g23Elena Georgescu elenaa_g23 Data 17 mai 2022 21:31:59
Problema Order Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<iostream>
#include<fstream>

using namespace std;

ifstream f("order.in");
ofstream g("order.out");

int A[150001];

void eliminare_copil(int n, int l, int r, int cop)
{
    if(l==r)
    {
        A[n]=0;
        g<<l<<' ';
        return;
    }
    int mid;
    mid=(l+r)/2;
    if(cop<=A[2*n]) eliminare_copil(2*n, l ,mid,cop);
    else {
            cop-=A[2*n];
            eliminare_copil(2*n+1, mid+1, r,cop);}
    A[n]--;

}

void arbore_copii(int n, int l, int r)
{
    if(l==r)
    {
        A[n]=1;
        return;
    }
    int mid;
    mid=(l+r)/2;
    arbore_copii(2*n, l ,mid);
    arbore_copii(2*n+1, mid+1, r);
    A[n]=A[2*n]+ A[2*n+1];

}



int main()
{
    int N, copil=2, pas=1;
    f>>N;
    arbore_copii(1,1,N);
    while(A[1]>0)
    { copil=copil+pas-1;
      while(copil>A[1])
      {
          copil-=A[1];
      }
    eliminare_copil(1,1,N,copil);
    pas++;
    }


    return 0;

}