Submission #1157091

#TimeUsernameProblemLanguageResultExecution timeMemory
1157091the_coding_poohSequence (BOI14_sequence)C++20
100 / 100
818 ms1356 KiB
#include <bits/stdc++.h> #define uwu return 0; using namespace std; long long solve(vector <int> input, int cnt, int use_zero){ if(cnt == 18) return 1; if(input.empty()) return use_zero; if(input.size() == 1){ if(!input[0]) return use_zero; long long ret = 0; if(input[0] & 1){ if(__builtin_popcount(input[0]) >= 2){ input[0] ^= 1; int lb = input[0] & -input[0]; ret = 10 * __lg(lb); input[0] ^= (1 << __lg(lb)); } else return 10; } for (int k = 0; k < 10; k++){ if(input[0] & (1 << k)){ ret *= 10; ret += k; } } return ret; } long long ret = 1e18; for (int i = 0; i <= 9; i++){ int nw = i; vector <int> bit_to_one; int now = 0; for(auto j:input){ for (int k = 0; k < 10; k++){ if(k != nw && (j & (1 << k))){ now |= (1 << k); } } nw++; if(nw == 10){ nw = 0; bit_to_one.push_back(now); now = 0; } } if(now){ bit_to_one.push_back(now); now = 0; } if((input[0] & 1) && (i == 0)) use_zero = 1; if(i != 0) use_zero = 0; ret = min(ret, solve(bit_to_one, cnt + 1, use_zero) * 10 + i); } return ret; } int main(){ cin.tie(0), ios::sync_with_stdio(0); int N; cin >> N; vector <int> input; for (int i = 1, a; i <= N; i++){ cin >> a; input.push_back((1 << a)); } cout << solve(input, 0, 0) << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...