Cod sursa(job #2625125)

Utilizator vladdudauDudau Vlad vladdudau Data 5 iunie 2020 19:01:57
Problema Order Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <bits/stdc++.h>
using namespace std;
int Arbore[90005],p;
ifstream fin("order.in");
ofstream fout("order.out");

void Initializeaza(int nod,int stanga,int dreapta)
{
     Arbore[nod]=dreapta-stanga+1;
     if(stanga==dreapta)
        return ;
     int mijloc=(stanga+dreapta)/2;;
     Initializeaza(2*nod,stanga,mijloc);
     Initializeaza(2*nod+1,mijloc+1,dreapta);
     }

void Update(int nod,int stanga,int dreapta,int pozitie)
{
     if(stanga==dreapta)
        {
        Arbore[nod]=0;
        fout<<stanga<<' ';
        return;
        }
     int mijloc=(stanga+dreapta)/2;
     if(p<=pozitie+Arbore[2*nod])
        Update(2*nod,stanga,mijloc,pozitie);
     else
        Update(2*nod+1,mijloc+1,dreapta,pozitie+Arbore[2*nod]);
     Arbore[nod]=Arbore[2*nod]+Arbore[2*nod+1];
     }


int main()
{
    int n;
    fin>>n;
    Initializeaza(1,1,n);
    p=2;
    for(int i=0;i<n;++i)
     {
      p=(p+i-1)%(n-i)+1;
      Update(1,1,n,0);
     }
 return 0;
}