답안 #602982

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
602982 2022-07-23T13:39:02 Z tutis 순열 (APIO22_perm) C++17
10 / 100
1000 ms 612 KB
#include "perm.h"
using namespace std;
#include <iostream>
#include <random>
#include <functional>
using ll = long long;
std::vector<int> construct_permutation(long long k)
{
	vector<int>ret = { -1};
	vector<ll>dp = {1};
	k--;
	while (k != 0)
	{
		vector<int>ret_ = ret;
		vector<ll>dp_ = dp;
		ll k_ = k;
		function<void(int)>dfs = [&](int l)
		{
			if (k < k_ || (k == k_ && dp.size() < dp_.size()))
			{
				k_ = k;
				dp_ = dp;
				ret_ = ret;
			}
			if (l == 0)
				return;
			int sz = (int)ret.size();
			int gal = 0;
			for (int i = sz - 1; i >= 0; i--)
			{
				ll sum = 0;
				for (int j = 0; j < (int)ret.size(); j++)
					if (ret[j] < i)
						sum += dp[j];
				if (sum <= k)
				{
					gal++;
					if (gal >= 3)
						break;
					k -= sum;
					dp.push_back(sum);
					for (int &j : ret)
						if (j >= i)
							j++;
					ret.push_back(i);

					dfs(l - 1);


					k += sum;
					dp.pop_back();
					ret.pop_back();
					for (int &j : ret)
						if (j >= i)
							j--;
				}
			}
		};
		dfs(9);
		ret = ret_;
		dp = dp_;
		k = k_;
	}
	ret.erase(ret.begin());
	return ret;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 3 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 3 ms 212 KB Output is correct
3 Correct 38 ms 316 KB Output is correct
4 Correct 118 ms 340 KB Output is correct
5 Partially correct 665 ms 448 KB Partially correct
6 Correct 413 ms 320 KB Output is correct
7 Correct 629 ms 612 KB Output is correct
8 Execution timed out 1099 ms 312 KB Time limit exceeded
9 Halted 0 ms 0 KB -