Pagini recente » Istoria paginii runda/muzica | Cod sursa (job #2588384) | Cod sursa (job #2586317) | Istoria paginii runda/muzica | Cod sursa (job #2945839)
#include <fstream>
using namespace std;
int aib[30005];int n;
void update(int poz,int val){
while(poz<=30000){
aib[poz]+=val;poz+=poz&-poz;
}
}
int query(int k){
int poz=0,poz1,s=0,s1;
for(int i=14;i>=0;i--){
poz1=poz+(1<<i);
if(poz1<=n){
s1=s+aib[poz1];
if(s1<k){
poz=poz1;s=s1;
}
}
}
return poz+1;
}
int main()
{
ifstream fin("order.in");
ofstream fout("order.out");
fin>>n;
for(int i=1;i<=n;i++){
update(i,1);
}
int poz=2,lung=n;
for(int i=1;i<=n;i++){
int afis=query(poz);
fout<<afis<<" ";
update(afis,-1);lung--;
if(lung==0){break;}
poz--;poz+=(i+1);
poz%=lung;if(poz==0){poz=lung;}
}
fout<<'\n';
return 0;
}