Cod sursa(job #852094)

Utilizator vladm97Matei Vlad vladm97 Data 10 ianuarie 2013 20:54:59
Problema Order Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
//#include<iostream>
#include<fstream>
using namespace std;
int arbint[150000];
int el,aux;
ofstream g("order.out");
void buildarbint(int nod,int st, int dr){
	if(st==dr)arbint[nod]=1;
	else{
		int div=(st+dr)/2;
		buildarbint(2*nod,st,div);
		buildarbint(2*nod+1,div+1,dr);
	arbint[nod]=arbint[2*nod]+arbint[2*nod+1];}
}
void cautare(int nod,int st,int dr){
	if(st==dr){
		g<<st<<" ";
		arbint[nod]=0;
	}
	else{
		int div=(st+dr)/2;
		
		if(el<=arbint[2*nod]){
			cautare(2*nod,st,div);
			arbint[nod]=arbint[2*nod]+arbint[2*nod+1];
		}
			else{
				el-=arbint[2*nod];
				cautare(2*nod+1,div+1,dr);
				arbint[nod]=arbint[2*nod]+arbint[2*nod+1];
				aux=aux+arbint[nod]-arbint[2*nod+1];
			}
		
	}
}
int main(){
	int i,n;
	ifstream f("order.in");
	f>>n;
	aux=1;
	buildarbint(1,1,n);
	for(i=1;i<=n;i++){
		el=(aux+i)%arbint[1];
		if(el==0)el=arbint[1];
		aux=0;
		cautare(1,1,n);
		}
}