Nu aveti permisiuni pentru a descarca fisierul grader_test7.ok
Cod sursa(job #3341620)
| Utilizator | Data | 20 februarie 2026 14:08:25 | |
|---|---|---|---|
| Problema | Order | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 1.17 kb |
#include <fstream>
#include <algorithm>
#include <cstring>
#include <climits>
#include <iomanip>
#include <numeric>
#include <bitset>
#include <string>
#include <vector>
#include <cmath>
#include <queue>
#include <deque>
#include <stack>
#include <list>
#include <map>
#include <set>
#define int long long
//#define int short
#define f first
#define s second
using namespace std;
ifstream cin("order.in");
ofstream cout("order.out");
int n, k = 2, r = 0, aib[30005];
void update(int poz, int val){
while (poz <= n){
aib[poz] += val;
poz += poz & (-poz);
}
}
int bit(int val){
int poz = 0;
for (int i = log2(n); i >= 0; i--){
if (poz + (1 << i) <= n && aib[poz + (1 << i)] < val){
val -= aib[poz + (1 << i)];
poz += (1 << i);
}
}
return poz + 1;
}
signed main(){
cin>>n;
for (int i = 1; i <= n; i++){
update(i, 1);
}
r = n;
for (int i = 1; i <= n; i++){
k = (k + i - 1) % r;
if (k == 0){
k = r;
}
int x = bit(k);
update(x, -1);
r--;
cout<<x<<" ";
}
}
