| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1366791 | ezzzay | 순열 (APIO22_perm) | C++20 | 620 ms | 496 KiB |
//#include "perm.h"
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ff first
#define ss second
#define pb push_back
ll check(vector<int>a){
int n=a.size();
a.insert(a.begin(),0);
vector<ll>dp(n+2);
dp[0]=1;
for(int i=1;i<=n;i++){
for(int j=0;j<a[i];j++){
if(dp[a[i]] > 2e18 - dp[j]){
dp[a[i]]=2e18;
}
else dp[a[i]]+=dp[j];
}
}
ll ans=0;
for(int i=1;i<=n;i++){
if(ans>2e18-dp[i]){
ans=2e18;
}
else ans+=dp[i];
}
return ans;
}
std::vector<int> construct_permutation(long long k){
k--;
vector<int>vc;
while(k){
int x=vc.size()+1;
bool u=0;
for(int i=vc.size();i>=0;i--){
vc.insert(vc.begin()+i,x);
if(check(vc)<=k){
u=1;
break;
}
vc.erase(vc.begin()+i);
}
if(u)continue;
k-=check(vc);
vector<int>pr;
for(auto a:vc)pr.pb(a-1);
return pr;
}
}컴파일 시 표준 에러 (stderr) 메시지
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
