제출 #972831

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

using namespace std;

#define scd(t) scanf("%d", &t)
#define sclld(t) scanf("%lld", &t)
#define forr(i, j, k) for (int i = j; i < k; i++)
#define frange(i, j) forr(i, 0, j)
#define all(cont) cont.begin(), cont.end()
#define mp make_pair
#define pb push_back
#define f first
#define s second
typedef long long int lli;
typedef pair<int, int> pii;
typedef vector<int> vi;
typedef vector<bool> vb;
typedef vector<lli> vll;
typedef vector<string> vs;
typedef vector<pii> vii;
typedef vector<vi> vvi;
typedef map<int, int> mpii;
typedef set<int> seti;
typedef multiset<int> mseti;
typedef long double ld;

vi construct_permutation(long long k)
{
	vi vec;
	int n = 0;
	k--;
	while(k) {
		int lo = 1;
		int hi = 60;
		while(lo != hi) {
			int mid = (lo+hi+1)/2;
			if((1LL<<mid)-1<=k) {
				lo = mid;
			}
			else hi=mid-1;
		}
		k-=(1LL<<lo)-1;
		vec.pb(lo);
	}
	

	vi out;
	int c = 0;
	for(auto e : vec) {
		for(int i=c+e-1; i>=c; i--) {
			out.pb(i);
		}
		c+=e;
	}
	reverse(all(out));
	// printf("%lld\n", k);
	// for(auto e : out) printf("%d ", e);
	// printf("\n");
	return out;
}

컴파일 시 표준 에러 (stderr) 메시지

perm.cpp: In function 'vi construct_permutation(long long int)':
perm.cpp:31:6: warning: unused variable 'n' [-Wunused-variable]
   31 |  int n = 0;
      |      ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...