Cod sursa(job #2386737)

Utilizator shantih1Alex S Hill shantih1 Data 23 martie 2019 16:41:52
Problema Order Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("order.in");
ofstream fout("order.out");

int n,i,j,nr,num[130005];

void build(int n,int l,int r)
{
	if(l==r)
	{	num[n]=1;	return;	}
	int m=(l+r)/2;
	build(2*n, l, m);
	build(2*n+1,m+1,r);
	num[n]=num[2*n]+num[2*n+1];
}

void search(int n,int l,int r,int p)
{
	if(l==r)
	{
		fout<<l<<" ";
		num[n]=0;	return;
	}
	int m=(l+r)/2;
	if(num[2*n]>=p)	search(2*n, l, m, p);
	else	search(2*n+1, m+1, r, p-num[2*n]);
	num[n]=num[2*n]+num[2*n+1];
}

int main() {
	
	fin>>n;
	build(1,1,n);

	int p=2,d=n;
	for(i=1;i<=n;i++)
	{
		search(1,1,n,p);
		
		if(--d)
		{
			p=(p+i)%d;
			if(p==0)	p=d;
		}
	}
}