# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
574681 | 2022-06-09T08:39:03 Z | WongChun1234 | 순열 (APIO22_perm) | C++17 | 3 ms | 340 KB |
#include "perm.h" #include<bits/stdc++.h> using namespace std; typedef long long ll; int pos[100]; vector<int> ret,pres; void add(int newpos){ for (auto &i:ret) if (i>=newpos) i++; ret.push_back(newpos); memset(pos,-1,sizeof(pos)); for (int i=0;i<ret.size();i++) pos[ret[i]]=i; } vector<int> construct_permutation(ll k){ memset(pos,-1,sizeof(pos)); ret.clear(); pres.clear(); while (k){ pres.push_back(k%4); k/=4; } reverse(pres.begin(),pres.end()); if (pres[0]==1){ }else if (pres[0]==2){ add(0); }else if (pres[0]==3){ add(0); add(0); } for (int i=1;i<pres.size();i++){ if (pres[i]==0){ add(ret.size()); add(ret.size()); }else if (pres[i]==1){ add(ret.size()); add(ret.size()); add(0); }else if (pres[i]==2){ add(ret.size()); add(0); add(ret.size()); }else if ((pos[0]==-1)||(pos[1]==-1)||(pos[1]>pos[0])){ add(ret.size()); add(0); add(ret.size()); add(0); }else{ add(ret.size()); add(ret.size()); add(2); } } return ret; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 212 KB | Output is correct |
2 | Correct | 1 ms | 212 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 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 | 2 ms | 212 KB | Output is correct |
6 | Correct | 2 ms | 212 KB | Output is correct |
7 | Correct | 2 ms | 340 KB | Output is correct |
8 | Correct | 3 ms | 340 KB | Output is correct |
9 | Correct | 2 ms | 340 KB | Output is correct |
10 | Correct | 3 ms | 340 KB | Output is correct |
11 | Correct | 3 ms | 340 KB | Output is correct |
12 | Correct | 2 ms | 340 KB | Output is correct |
13 | Correct | 3 ms | 340 KB | Output is correct |