제출 #1061172

#제출 시각아이디문제언어결과실행 시간메모리
1061172Muhammet순열 (APIO22_perm)C++17
10 / 100
580 ms444 KiB
#include <bits/stdc++.h>
#include "perm.h"

using namespace std;

#define ll long long
#define sz(s) (int)s.size()

const ll M = 1e18+1;

ll f(vector <int> v){
    int n = sz(v);
    vector <ll> dp(n,1);
    for(int i = 0; i < n; i++){
        for(int j = 0; j < i; j++){
            if(v[j] < v[i]) dp[i] += dp[j];
        }
    }

    ll k = 0;
    for(int i = 0; i < n; i++){
    	if(M-dp[i] < k) return M;
        k += dp[i];
    }
    return k+1;
}

vector<int> construct_permutation(ll k){
	int x = -1;
	vector <int> v;
	int t = 1000;
	while(t--){
		x++;
		v.push_back(x);
		ll y = f(v);
		if(y == k) break;
		if(y <= k) continue;
		for(int i = sz(v)-2; i >= 0; i--){
			swap(v[i],v[i+1]);
			y = f(v);
			if(y <= k) break;
		}
		if(y == k) break;
		// for(auto i : v){
		// 	cout << i << ' ';
		// }
		// cout << "\n";
	}
	return v;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...