Submission #580252

# Submission time Handle Problem Language Result Execution time Memory
580252 2022-06-20T19:42:50 Z CaroLinda Permutation (APIO22_perm) C++17
100 / 100
2 ms 340 KB
#include "perm.h"
#include <bits/stdc++.h>
 
#define lp(i,a,b) for(int i = a ; i < b ;i++ ) 
#define pb push_back
#define ll long long
#define all(x) x.begin(),x.end()
#define sz(x) (int)x.size()
#define mk make_pair
#define ff first
#define ss second
#define pii pair<int,int>

using namespace std ;

vector<int> solve(ll n){
	if(n == 3) return {2,1};
	if(n == 4) return {3,2,1};
	if(n == 5) return {3,1,2};
	if(n == 7) return {3,2,4,1};
	if(n == 11) return {5,3,1,2,4};
	if(n == 15) return {7, 6, 5, 2, 1, 3, 4};

	if(n%4 == 3){
		vector<int> ret = solve(n/4);
		ret.push_back(sz(ret)+1);
		ret.push_back(sz(ret)+1);
		int nxt = sz(ret)+1;
		ret.insert(ret.begin()+2, nxt);
		return ret;
	}

	vector<int> ret = solve(n/2);
	ret.push_back(sz(ret)+1);
	if(n&1LL){
		for(auto &e : ret) e++;
		ret.push_back(1);
	}
	return ret;

}

vector<int> construct_permutation(long long k)
{
	if(k == 2) return {0};
	
	vector<int> ret = solve(k) ;
	for(auto &e : ret ) --e ;
	return ret ;

}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Correct 1 ms 340 KB Output is correct
9 Correct 1 ms 340 KB Output is correct
10 Correct 2 ms 340 KB Output is correct
11 Correct 1 ms 340 KB Output is correct
12 Correct 1 ms 340 KB Output is correct
13 Correct 2 ms 340 KB Output is correct