Pagini recente » Cod sursa (job #2899774) | Cod sursa (job #1823425) | Cod sursa (job #1510182) | Cod sursa (job #1258556) | Cod sursa (job #2903926)
#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;
}