# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1112247 | XingXangXong | Permutation (APIO22_perm) | C++17 | 3 ms | 336 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 <bits/stdc++.h>
#include "perm.h"
using namespace std;
typedef long long ll;
vector<int> dp = {-1, 0, 1};
vector<vector<int>> dpConst = {{}, {}, {0}};
int calcMin(ll id, ll k)
{
if (id >= k) return dp[k];
vector<int> digs;
while (k > 0) digs.push_back(k % id), k /= id;
reverse(digs.begin(), digs.end());
int ans = (digs.size()-1)*dp[id];
ans += dp[digs[0]];
for (int i = 1; i < digs.size(); i++) ans += dp[digs[i]+1];
return ans;
}
vector<int> constMin(ll id, ll k)
{
if (id >= k) return dpConst[k];
vector<int> digs;
while (k > 0) digs.push_back(k % id), k /= id;
reverse(digs.begin(), digs.end());
vector<int> ans = dpConst[digs[0]];
for (int i = 1; i < digs.size(); i++)
{
vector<int> aux = dpConst[id];
for (auto x : ans) aux.push_back(x+dp[id]);
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |