Cod sursa(job #2451474)

Utilizator mihai50000Mihai-Cristian Popescu mihai50000 Data 26 august 2019 20:49:36
Problema Order Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <bits/stdc++.h>

using namespace std;

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

const int DIM = 30007;

int arb[4 * DIM];

void build(int pos, int l, int r)
{
	arb[pos] = r - l + 1;
	
	if(l != r)
	{
		int mid = (l + r) / 2;
		
		build(pos * 2, l, mid);
		build(pos * 2 + 1, mid + 1, r);
	}
}

void query(int pos, int l, int r, int x)
{
	if(l == r)
	{
		fout << l << ' ';
		arb[pos] = 0;
		
		return ;
	}
	
	int mid = (l + r) / 2;
	
	if(arb[pos * 2] >= x)
		query(pos * 2, l, mid, x);
	else
		query(pos * 2 + 1, mid + 1, r, x - arb[pos * 2]);
	
	arb[pos]--;
}

main()
{
	int n;
	fin >> n;
	
	build(1, 1, n);
	
	int pos = 2;
	
	for(int i = 1; i <= n; i++)
	{
		query(1, 1, n, pos);
		
		if(i != n)
		{
			pos = (pos + i) % arb[1];
			
			if(pos == 0)
				pos = arb[1];
		}
	}
}