제출 #658341

#제출 시각아이디문제언어결과실행 시간메모리
658341Zena_Hossam순열 (APIO22_perm)C++17
10 / 100
248 ms262144 KiB
#include<bits/stdc++.h>
#include "perm.h"
//#include "grader.cpp"
#define  ll long long
using namespace std;
std::vector<int> construct_permutation(long long k)
{
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    vector<pair<ll,int>>v;
    vector<int>s,x;
    long long l=1;
    for(int i=0;i<100;i++)
    {
        v.push_back({l-1,i});
        l*=2;
        if(l-1>1e18)break;
    }
    ll p=k-2;k--;
    while(1)
    {
        pair<ll,int>h={k,0};
        int o=upper_bound(v.begin(),v.end(),h)-v.begin();
        while(v[o].first>k&&k)o--;
        while(k>=v[o].first){
        for(int i=p-v[o].second+1;i<=p;i++){
            s.push_back(i);
        }
        p-=v[o].second;
        k-=v[o].first;}
        if(k<=0)break;
    }
    for(int i=0;i<s.size();i++)
    {
        s[i]-=(p+1);
    }
    return s;
}

컴파일 시 표준 에러 (stderr) 메시지

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