Pagini recente » Cod sursa (job #3183941) | Cod sursa (job #2311106) | Cod sursa (job #223916) | Cod sursa (job #1502522) | Cod sursa (job #1969770)
#include <cstdio>
using namespace std;
FILE *f=fopen("order.in","r");
FILE *g=fopen("order.out","w");
int AIB[30005];
int N;
void u(int pos,int val)
{
for(int i=pos;i<=N;i+=(i&(-i)))
AIB[i]+=val;
}
int q(int val)
{
int i=0,s=0;
for(int p=(1<<30);p;p>>=1)
if(i+p<=N&&s+AIB[i+p]<val)
{i+=p;s+=AIB[i];}
i++;
return i;
}
int main()
{
fscanf(f,"%d",&N);
for(int i=1;i<=N;i++) u(i,1);
int pos=2;
for(int i=1;i<=N;i++)
{
pos=(pos+i-2)%(N-i+1)+1;
int val=q(pos);
u(val,-1);
fprintf(g,"%d ",val);
}
fclose(f);
fclose(g);
return 0;
}