제출 #907377

#제출 시각아이디문제언어결과실행 시간메모리
907377Tymond순열 (APIO22_perm)C++17
100 / 100
13 ms600 KiB
#include <bits/stdc++.h> #include "perm.h" using namespace std; using ll = long long; using ld = long double; const ld INF = 1e9; vector<signed> construct_permutation(ll k){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int aktBit = 64 - __builtin_clzll(k); vector<ld> ans; bool bylo = false; while(aktBit > 0){ aktBit -= 2; if(aktBit == -1){ //został jeden na końcu ans.push_back(INF);//n * 2 if(k & 1){ ans.push_back(-INF);//n + 1 } }else{ int kon = (k >> aktBit) & 3; if(ans.size() == 0){ if(kon == 2){ ans = {0}; }else{ ans = {1, 0}; bylo = true; } }else{ if(kon == 0){ //n * 4 ans.push_back(INF); ans.push_back(INF + 1); }else if(kon == 1){ //n * 4 + 1 ans.push_back(INF); ans.push_back(INF + 1); ans.push_back(-INF); bylo = true; }else if(kon == 2){ //n * 4 + 2 ans.push_back(INF); ans.push_back(-INF); ans.push_back(INF + 1); bylo = true; }else if(kon == 3){ //4 * n + 3 if(bylo){ ans.push_back(INF); ans.push_back(INF + 1); ans.push_back(1.5); }else{ ans.push_back(INF); ans.push_back(-INF); ans.push_back(INF + 1); ans.push_back(-INF - 1); bylo = true; } } } } vector<ld> nasz = ans; sort(nasz.begin(), nasz.end()); for (auto &it : ans){ it = lower_bound(nasz.begin(), nasz.end(), it) - nasz.begin(); } } return vector<signed> (ans.begin(), ans.end()); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...