#include <bits/stdc++.h>
using namespace std;
const int MAX = 100001;
const string BASE = string(MAX, '9');
string solve(vector<int> &arr) {
int X = 0, Z = 0, K;
string Y, ans = BASE;
vector<int> tmp;
for (int i : arr)
X |= i;
if (X == 0 || arr.empty())
return "";
if (arr.size() == 1) {
for (int i = 0; i < 10; i++)
if (arr[0] & (1 << i))
tmp.push_back(i);
sort(tmp.begin(), tmp.end()), ans = "";
if (tmp.size() == 1 && tmp[0] == 0)
return "10";
if (tmp[0] == 0)
tmp.erase(tmp.begin()), Z = 1;
for (int i : tmp) {
ans += to_string(i);
if (Z)
ans += '0', Z = 0;
}
return ans;
}
for (int i = 0; i < 10; i++) {
tmp.clear(), X = Z = 0;
for (int j = 0; j < arr.size(); j++) {
K = (i + j) % 10;
if (K == 0 && j != 0)
tmp.push_back(X), X = 0;
X |= (1023 ^ (1 << K)) & arr[j], Z += (arr[j] & (1 << K)) >> K;
}
if (!Z)
continue;
tmp.push_back(X), Y = solve(tmp) + to_string(i);
if (i == 0 && Y.size() == 1)
Y = "1" + Y;
if (Y.size() < ans.size() || (Y.size() == ans.size() && Y < ans))
ans = Y;
}
return ans;
}
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int N, B;
vector<int> arr;
cin >> N;
for (int i = 0; i < N; i++)
cin >> B, arr.push_back(1 << B);
cout << solve(arr) << '\n';
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |