Pagini recente » Cod sursa (job #1198533) | Cod sursa (job #1137012) | Cod sursa (job #220398) | Cod sursa (job #1136791) | Cod sursa (job #3265375)
#include <fstream>
using namespace std;
ifstream cin("order.in");
ofstream cout("order.out");
int n,aib[30002];
void update(int poz,int val){
while(poz<=n){
aib[poz]+=val;
poz+=(poz&-poz);
}
}
int query(int poz){
int rasp=0;
while(poz>0){
rasp+=aib[poz];
poz-=(poz&-poz);
}
return rasp;
}
int cautbin(int a){
int st=1,dr=n,rasp=0;
while(st<=dr){
int mij=(st+dr)/2;
if(query(mij)>=a){
rasp=mij;dr=mij-1;
}else st=mij+1;
}
return rasp;
}
int main()
{
int a,i,cn,aux;
cin>>n;cn=n;
for(i=1;i<=n;i++)
update(i,1);
a=2;
for(i=1;i<=n;i++){
aux=cautbin(a);
update(aux,-1);
///cout<<aux<<" ";
cn--;a+=i;
if(cn) a=(a-1)%cn+1;
}
return 0;
}