fork(2) download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. const int MPOW=17;
  6. const int N=1<<MPOW;
  7.  
  8. struct BIT
  9. {
  10. int arr[N];
  11. BIT(){fill(arr,arr+N,0);}
  12.  
  13. void add(int x,int y)
  14. {
  15. for(;x<N;x|=x+1)
  16. arr[x]+=y;
  17. }
  18. int get(int x)
  19. {
  20. int sum=0;
  21. int ret=0;
  22. for(int i=N;i && i+ret-1<N;i>>=1)
  23. {
  24. if(sum+arr[i+ret-1]<=x)
  25. sum+=arr[i+ret-1],
  26. ret+=i;
  27. }
  28. return ret;
  29. }
  30. };
  31.  
  32. main()
  33. {
  34. ios::sync_with_stdio(0);
  35. cin.tie(0);
  36. int n,k;
  37. cin>>n>>k;
  38. BIT soldiers;
  39. for(int i=0;i<n;i++)
  40. soldiers.add(i+1,1);
  41. int K=0;
  42. int N=n;
  43. int t;
  44. while(n)
  45. {
  46. K=(K+k-1)%n;
  47. t=soldiers.get(K);
  48. cout<<t<<' ';
  49. soldiers.add(t,-1);
  50. n--;
  51. }
  52. cout<<endl;
  53. }
  54.  
Success #stdin #stdout 0s 3868KB
stdin
5 3
stdout
3 1 5 2 4