제출 #641289

#제출 시각아이디문제언어결과실행 시간메모리
641289baojiaopisu순열 (APIO22_perm)C++17
91.33 / 100
5 ms388 KiB
#include<bits/stdc++.h> using namespace std; using ll = long long; using ld = long double; using ull = unsigned long long; using pii = pair<int, int>; using pll = pair<ll, ll>; using pld = pair<ld, ld>; #define fi first #define se second #define pb push_back #define pf push_front #define mp make_pair #define ins insert #define btpc __builtin_popcount #define btclz __builtin_clz #define sz(x) (int)(x.size()); #define all(x) x.begin(), x.end() #define debug(...) " [" << #__VA_ARGS__ ": " << (__VA_ARGS__) << "] " mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); int d4x[4] = {1, 0, -1, 0}; int d4y[4] = {0, 1, 0, -1}; int d8x[8] = {0, 1, 1, 1, 0, -1, -1, -1}; int d8y[8] = {1, 1, 0, -1, -1, -1, 0, 1}; template<class X, class Y> bool minimize(X &x, const Y &y) { if (x > y) { x = y; return true; } return false; } template<class X, class Y> bool maximize(X &x, const Y &y) { if (x < y) { x = y; return true; } return false; } const int MOD = 1e9 + 7; //998244353 template<class X, class Y> void add(X &x, const Y &y) { x = (x + y); if(x >= MOD) x -= MOD; } template<class X, class Y> void sub(X &x, const Y &y) { x = (x - y); if(x < 0) x += MOD; } /* Author : Le Ngoc Bao Anh, 12A5, LQD High School for Gifted Student*/ const ll INF = 1e9; const int N = 1e5 + 10; vector<int> insert(vector<int> ans, int pos, int iter) { vector<int> res; for(int i = 0; i < pos; i++) res.pb(ans[i]); res.pb(iter); for(int i = pos; i < ans.size(); i++) res.pb(ans[i]); return res; } vector<int> construct_permutation(ll k) { int LOG = 60; ll curr = 1, n = k; vector<int> ans; int iter = 0; while(n > curr) { ++iter; if(curr * 2 <= n) { ans = insert(ans, iter - 1, iter); curr *= 2; continue; } else { for(int i = LOG; i >= 0; i--) { if(curr + (1ll << i) <= n) { ans = insert(ans, i, iter); curr += (1ll << i); ++iter; } } } } for(auto &x : ans) --x; return ans; }

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

perm.cpp: In function 'std::vector<int> insert(std::vector<int>, int, int)':
perm.cpp:74:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   74 |  for(int i = pos; i < ans.size(); i++) res.pb(ans[i]);
      |                   ~~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...