Submission #843242

#TimeUsernameProblemLanguageResultExecution timeMemory
843242manizareSequence (BOI14_sequence)C++14
25 / 100
91 ms2264 KiB
#include <bits/stdc++.h> #define int long long #define pb push_back #define F first #define S second #define all(a) a.begin(),a.end() #define pii pair <int,int> #define int long long using namespace std ; mt19937 rng(time(0)) ; const int maxn = 1e5 + 10 , inf = 1e17 + 10 ; int a10[18] ; int dfs(vector <int> vec , int ok = 1){ if(vec.size() == 1){ int s = vec.back() ; //cout << "hi " << s << " " ; vector <int> vj ; for(int i = 0 ;i < 10 ; i++){ if(s>>i&1){ vj.pb(i) ; } } // cout<< vj.size() << " " ; if(vj.size() >= 2){ if(vj[0] == 0){ swap(vj[0] , vj[1]) ; } }else{ if(vj.size() == 0){ // cout << ok << "---\n" ; return ok ; } if(ok && vec[0] == 0){ // cout << 1 << "=\n" ; return 1 ; } if(vec[0] == 1){ // cout << 10 << "_-\n"; return 10; } } int ans= 0 ; for(int i = 0 ; i < vj.size() ; i++){ ans *= 10; ans += vj[i] ; } // cout << ans << " d\n"; return ans ; } if(ok == 0){ bool ok2 = 1 ; for(int i = 0 ; i < vec.size() ; i++){ if(vec[i] != 0 )ok2 =0 ; } if(ok2 == 1){ return 0; } } int ans = inf ; for(int i = 0 ; i < 10 ; i++){ int k = i , t = 0 ; vector <int> vec2 ; for(int j = 0 ;j < vec.size() ; j++){ if(k==10){ k = 0 ; vec2.pb(t) ; t = 0 ; } if(vec[j]>>k&1){ vec[j]-=(1<<k); t |= vec[j] ; vec[j]+=(1<<k); }else{ t |= vec[j] ; } k++; } vec2.pb(t) ; if(vec == vec2 && ok == (i==0)){ continue ; } ans = min(ans , dfs(vec2 , (i == 0)) * 10 + i) ; } /* for(int i =0 ; i < vec.size() ; i++){ cout << vec[i] << " " ; } cout << " - " << ok << " " << ans << "\n" ; */ return ans ; } signed main(){ ios::sync_with_stdio(false); cin.tie(0) ; a10[0] = 1; for(int i =1 ;i <= 17 ; i++){ a10[i] = a10[i-1] * 10 ; } vector <int> vec; int n ;cin >> n ; for(int i = 1; i <= n; i++){ int x; cin >> x ; vec.pb((1<<x)) ; } cout << dfs(vec) ; } /* */

Compilation message (stderr)

sequence.cpp: In function 'long long int dfs(std::vector<long long int>, long long int)':
sequence.cpp:46:23: 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]
   46 |     for(int i = 0 ; i < vj.size() ; i++){
      |                     ~~^~~~~~~~~~~
sequence.cpp:55:23: 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]
   55 |     for(int i = 0 ; i < vec.size() ; i++){
      |                     ~~^~~~~~~~~~~~
sequence.cpp:66:22: 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]
   66 |     for(int j = 0 ;j < vec.size() ; j++){
      |                    ~~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...