Submission #982364

# Submission time Handle Problem Language Result Execution time Memory
982364 2024-05-14T07:27:30 Z nnin Permutation (APIO22_perm) C++17
100 / 100
2 ms 360 KB
#include "perm.h"
#include<bits/stdc++.h>
using namespace std;
using ll = long long;

vector<int> construct_permutation(long long k)
{
	int g = __lg(k);
	vector<int> ans;
	int cur = 0;
	while(cur<g) {
		ans.push_back(cur++);
	}
	for(int i=g-1;i>=0;i--) {
		if(k & (1ll<<i)) {
			if(i>0 && (k&(1ll<<(i-1))) && ans.size()>=2 && ans[ans.size()-2]>ans[ans.size()-1]) {
				i--;
				for(int j=0;j<ans.size();j++) if(ans[j]>=i) ans[j]++;
				ans.insert(ans.end()-2, i);
			} else {
				for(int j=0;j<ans.size();j++) if(ans[j]>=i) ans[j]++;
				ans.push_back(i);
			}
		}
	}
	return ans;
}

Compilation message

perm.cpp: In function 'std::vector<int> construct_permutation(long long int)':
perm.cpp:18:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   18 |     for(int j=0;j<ans.size();j++) if(ans[j]>=i) ans[j]++;
      |                 ~^~~~~~~~~~~
perm.cpp:21:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   21 |     for(int j=0;j<ans.size();j++) if(ans[j]>=i) ans[j]++;
      |                 ~^~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 1 ms 348 KB Output is correct
5 Correct 1 ms 360 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
9 Correct 1 ms 348 KB Output is correct
10 Correct 2 ms 348 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
12 Correct 1 ms 344 KB Output is correct
13 Correct 1 ms 348 KB Output is correct