제출 #984151

#제출 시각아이디문제언어결과실행 시간메모리
984151IzazPermutation (APIO22_perm)C++17
10 / 100
1 ms600 KiB
#include <bits/stdc++.h>
using namespace std;

#define f first
#define s second
#define mn(a,b) min(a,b)
#define mx(a,b) max(a,b)
#define ll long long
ll power[61];
int re(ll k){
	for(int i = 0 ; i < 61 ;i++){
		if(power[i]-1 >= k)return i-1;
	}
	return 61;
}
vector<int>Solve(vector<int>vec , int Now_adding, int k){
	if(k == 0 ){
		return vec;
	}
	if(Now_adding==61){
	    return vec;
	}
	
	int MAXI = re(k);
	vector<int>AL;
	for(int i = 0 ; i < vec.size();i++){
		if(i == MAXI){
			AL.push_back(Now_adding);
		}
		AL.push_back(vec[i]);
	}
	if(MAXI == vec.size())AL.push_back(Now_adding);
	return Solve(AL,Now_adding+1,k - (power[MAXI]));
}
vector<int> construct_permutation(long long  k)
{
	ll Num =  1;
	k -- ;
	power[0] = 1;
	for(int i = 1;i<=60;i++){
		Num*=2;
		power[i] = Num;
	}
	vector<vector<int>>Answer;
	vector<int>My_Answer;
	int Last =-1; 
	for(int i = 0 ; i < 90;i ++) { 
		My_Answer.push_back(i);
		ll Num2 = (i - Last + 1);
		if(power[Num2]-1>k){
		k-=power[i-Last]-1;
		Answer.push_back(Solve(My_Answer,i+1,k));
		break;
		}
	}
	reverse(Answer.begin(),Answer.end());
	vector<int>Ans2;
	for(auto x:Answer){
		for(auto y: x)Ans2.push_back(y);
	}
   return Ans2;
}
// int main(){
// 	for(auto x:construct_permutation(8)){
// 		cout<<x<<' ';
// 	}
// 	return 0;
// }

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

perm.cpp: In function 'std::vector<int> Solve(std::vector<int>, int, int)':
perm.cpp:26:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   26 |  for(int i = 0 ; i < vec.size();i++){
      |                  ~~^~~~~~~~~~~~
perm.cpp:32:10: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   32 |  if(MAXI == vec.size())AL.push_back(Now_adding);
      |     ~~~~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...