| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 789672 | GusterGoose27 | Permutation (APIO22_perm) | C++17 | 51 ms | 340 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "perm.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int test = 9;
const int max_use = 100;
vector<int> table[(1 << test)+1];
bool made = 0;
void construct(ll k, int s, deque<int> &ans) {
if (k == 1) return;
for (int i = 2; i <= max_use; i++) {
if (table[i].empty() || !(k%i == 0)) continue;
construct(k/i, s+table[i].size(), ans);
for (int j = table[i].size()-1; j >= 0; j--) ans.push_front(s+table[i][j]);
return;
}
construct(k-1, s+1, ans);
ans.push_back(s);
}
bool vis[test];
int bit[test+1];
void upd(int p, int v, int n) {
for (; p <= n; p |= (p+1)) bit[p] += v;
}
int sum(int p) {
int s = 0;
for (p++; p > 0; p &= (p-1)) s += bit[p-1];
return s;
}
int get_sub(vector<int> &v) {
int n = v.size();
fill(bit, bit+n+1, 0);
upd(0, 1, n);
for (int i = 0; i < n; i++) {
upd(v[i]+1, sum(v[i]+1), n);
}
return sum(n);
}
void make_perm(int n, vector<int> &v) {
if (v.size() == n) {
int inc = get_sub(v);
if (table[inc].size() == 0 || v.size() < table[inc].size()) table[inc] = v;
return;
}
for (int i = 0; i < n; i++) {
if (vis[i]) continue;
vis[i] = 1;
v.push_back(i);
make_perm(n, v);
v.pop_back();
vis[i] = 0;
}
}
void make_basic() {
for (int i = 1; i <= test; i++) {
vector<int> v;
make_perm(i, v);
}
}
void print(vector<int> &v) {
for (int p: v) cout << ' ' << p;
cout << '\n';
}
vector<int> construct_permutation(ll k) {
if (!made) {
make_basic();
made = 1;
}
// for (int i = 2; i < 10; i++) {
// cout << i << ":"; print(table[i]);
// }
deque<int> ans;
construct(k, 0, ans);
vector<int> v;
for (int p: ans) v.push_back(p);
return v;
}Compilation message (stderr)
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
