제출 #974357

#제출 시각아이디문제언어결과실행 시간메모리
974357IUA_Hasin순열 (APIO22_perm)C++17
71.22 / 100
12 ms1372 KiB
#include "perm.h" #include <bits/stdc++.h> #define endl "\n" #define ll long long using namespace std; ll close_pow(ll n){ ll a = 1; ll b = pow(2, a)-1; ll ans = 1; while(n>b){ // cout<<b<<endl; ans++; b = (ll)(pow(2, ans)-1); if(b>n){ ans--; break; } else if(b==n){ break; } // cout<<b<<endl; } return ans; } std::vector<ll> dunno(ll n){ std::vector<ll> x; while(n>0){ ll a = close_pow(n); // cout<<a<<endl; x.push_back(a); ll b = (ll)(pow(2, a)); n = n-b+1; } return x; } std::vector<int> construct_permutation(long long k) { std::vector<ll> v = dunno(k-1); ll sum = 0; for(ll i=0; i<v.size(); i++){ sum = sum+v[i]; } std::vector<int> ans; ll ins = sum-1; ll tempp = 0; ll temp = v[tempp]; ll cnt = 0; while(cnt<=sum-1){ for(ll i=1; i<=temp; i++){ ll a = ins-temp+i; ans.push_back(a); cnt++; } ins = ins-temp; tempp++; temp = v[tempp]; } // for(int i=0; i<ans.size(); i++){ // cout << ans[i] << " "; // } // cout<<endl; // ll exp = 0; // for(int i=0; i<v.size(); i++){ // ll a = pow(2, v[i]); // exp = exp+a-1; // } // cout<<exp+1<<endl; return ans; }

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

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