제출 #642542

#제출 시각아이디문제언어결과실행 시간메모리
642542danikoynov순열 (APIO22_perm)C++17
0 / 100
0 ms212 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
vector < int > construct_permutation(ll k)
{
    vector < int > v;
    k --;
    ll cur = 0, cnt = 0;
    bool tf = false;
    for (ll bit = 63; bit >= 0; bit --)
    {
        if ((k & ((ll)1 << bit)) != 0)
        {
            if (!tf)
            {

            for (int s = 0; s < bit; s ++)
                v.push_back(cur ++);
            cnt ++;
            tf = true;
            }
            else
            {

                if (bit == 0)
                {
                    cnt ++;
                    continue;
                }
                    cur ++;
                int num = v[bit - 1];
                num ++;
                for (int j = bit; j < v.size(); j ++)
                    v[j] ++;
                v.push_back(num);
            }

        }
    }

    cout << cnt << endl;
    vector < int > d;
    for (int s = 0; s < cnt; s ++)
        d.push_back(cur ++);
    reverse(d.begin(), d.end());
    for (int j = 0; j < v.size(); j ++)
        d.push_back(v[j]);
    v = d;
    /**for (int i = 0; i < v.size(); i ++)
        cout << v[i] << " ";
    cout << endl;*/
    return v;

}

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

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