Submission #716929

#TimeUsernameProblemLanguageResultExecution timeMemory
716929raysh07Permutation (APIO22_perm)C++17
91.33 / 100
3 ms348 KiB
#include "perm.h"
#include <bits/stdc++.h>
using namespace std;
vector <int> ans;

void dowork(int y){
    for (int i=0; i<ans.size(); i++){
        if (ans[i] >= y){
            ans[i]++;
        }
    }
}

vector<int> construct_permutation(long long k)
{
    ans.clear();
	int last = -1;
	long long fk = k;
	for (int i=0; i<62; i++){
	    if (fk != 0){
	        if (fk >> i & 1)
	        fk -= 1LL<<i;
	        
	        if (fk != 0)
	        ans.push_back(i);
	        last = i;
	    }
	}
	
	for (int i=last - 1; i>=0; i--){
	    if (k >> i & 1){
	        dowork(i);
	        ans.push_back(i);
	    }
	}
	
	return ans;
}

// int main(){
//     int k; cin>>k;
//     vector <int> ok = construct_permutation(k);
//     for (auto x: ok) cout<<x<<" ";
//     return 0;
// }

Compilation message (stderr)

perm.cpp: In function 'void dowork(int)':
perm.cpp:7:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    7 |     for (int i=0; i<ans.size(); i++){
      |                   ~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...