#include <bits/stdc++.h>
using namespace std;
#define m_p make_pair
#define all(x) (x).begin(),(x).end()
#define sz(x) ((int)(x).size())
#define fi first
#define se second
typedef long long ll;
mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count());
mt19937 rnf(2106);
const ll INF = 1000000009000000009;
ll rec(vector<int> v)
{
while (!v.empty() && v.back() == 0)
v.pop_back();
if (v.empty())
return 0;
if (sz(v) == 1)
{
ll ans = 0;
if (!(v[0] & 1))
{
for (int i = 0; i < 10; ++i)
{
if ((v[0] & (1 << i)))
ans = (ans * 10 + i);
}
}
else
{
bool z = false;
for (int i = 1; i < 10; ++i)
{
if ((v[0] & (1 << i)))
{
ans = (ans * 10 + i);
if (!z)
{
z = true;
ans = (ans * 10);
}
}
}
if (!z)
ans = 10;
}
return ans;
}
ll ans = INF;
for (int s = 0; s < 10; ++s)
{
int x = s;
vector<int> u = v;
vector<int> nv;
int j = 0;
for (int i = 0; i < sz(u); ++i)
{
u[i] = (u[i] & (((1 << 10) - 1) ^ (1 << x)));
if (x == 9)
{
int y = 0;
while (j <= i)
y |= u[j++];
nv.push_back(y);
}
x = (x + 1) % 10;
}
{
int y = 0;
while (j < sz(u))
y |= u[j++];
if (y)
nv.push_back(y);
}
if (sz(v) == 2 && sz(nv) == 2 && v[0] == nv[0] && v[1] == nv[1])
continue;
ll yans = rec(nv);
if (s == 0 && yans == 0)
yans = 1;
ans = min(ans, yans * 10 + s);
}
{
int s = 0;
int x = s;
vector<int> u = v;
vector<int> nv;
int j = 0;
for (int i = 0; i < sz(u); ++i)
{
if (i > 0)
u[i] = (u[i] & (((1 << 10) - 1) ^ (1 << x)));
if (x == 9)
{
int y = 0;
while (j <= i)
y |= u[j++];
nv.push_back(y);
}
x = (x + 1) % 10;
}
{
int y = 0;
while (j < sz(u))
y |= u[j++];
if (y)
nv.push_back(y);
}
if (!(sz(v) == 2 && sz(nv) == 2 && v[0] == nv[0] && v[1] == nv[1]))
{
ll yans = rec(nv);
ans = min(ans, yans * 10 + s);
}
}
return ans;
}
bool stg(ll ans, vector<int> v)
{
bool z = true;
int x = ans;
for (int i = 0; i < sz(v); ++i)
{
bool zz = false;
int y = x;
while (y)
{
if ((1 << y % 10) == v[i])
{
zz = true;
break;
}
y /= 10;
}
if (!zz)
{
z = false;
break;
}
++x;
}
return z;
}
void solv()
{
int n;
cin >> n;
vector<int> v;
while (n--)
{
int x;
cin >> x;
v.push_back((1 << x));
}
ll ans = rec(v);
cout << ans << "\n";
}
int main()
{
#ifdef SOMETHING
freopen("input.txt", "r", stdin);
//freopen("output.txt", "w", stdout);
#endif // SOMETHING
ios_base::sync_with_stdio(false), cin.tie(0);
/*for (int l = 1; l <= 1000; ++l)
{
for (int r = l; r <= l + 20; ++r)
{
vector<int> v;
for (int i = l; i <= r; ++i)
{
int x = i;
vector<int> vx;
while (x)
{
vx.push_back(x % 10);
x /= 10;
}
v.push_back((1 << vx[rnf() % sz(vx)]));
}
ll ans = rec(v);
if (!ans)
{
ans = 1;
while (1)
{
if (stg(ans, v))
break;
ans *= 10;
}
}
if (ans > l)
{
cout << "WA0\n";
cout << l << ' ' << r << "\n";
cout << ans << "\n";
rec(v);
return 0;
}
else if (!stg(ans, v))
{
cout << "WA1\n";
cout << l << ' ' << r << "\n";
cout << ans << "\n";
rec(v);
return 0;
}
}
}
cout << "OK\n";
return 0;*/
int tt = 1;
//cin >> tt;
while (tt--)
solv();
return 0;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
204 KB |
Output is correct |
2 |
Correct |
2 ms |
332 KB |
Output is correct |
3 |
Correct |
1 ms |
204 KB |
Output is correct |
4 |
Correct |
1 ms |
204 KB |
Output is correct |
5 |
Correct |
0 ms |
204 KB |
Output is correct |
6 |
Correct |
0 ms |
204 KB |
Output is correct |
7 |
Correct |
1 ms |
204 KB |
Output is correct |
8 |
Correct |
2 ms |
332 KB |
Output is correct |
9 |
Correct |
0 ms |
204 KB |
Output is correct |
10 |
Correct |
3 ms |
336 KB |
Output is correct |
11 |
Correct |
4 ms |
332 KB |
Output is correct |
12 |
Correct |
1 ms |
204 KB |
Output is correct |
13 |
Correct |
1 ms |
204 KB |
Output is correct |
14 |
Correct |
4 ms |
332 KB |
Output is correct |
15 |
Correct |
4 ms |
332 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
204 KB |
Output is correct |
2 |
Correct |
2 ms |
332 KB |
Output is correct |
3 |
Correct |
1 ms |
204 KB |
Output is correct |
4 |
Correct |
1 ms |
204 KB |
Output is correct |
5 |
Correct |
1 ms |
204 KB |
Output is correct |
6 |
Correct |
0 ms |
204 KB |
Output is correct |
7 |
Correct |
3 ms |
332 KB |
Output is correct |
8 |
Correct |
1 ms |
204 KB |
Output is correct |
9 |
Correct |
2 ms |
332 KB |
Output is correct |
10 |
Correct |
0 ms |
204 KB |
Output is correct |
11 |
Correct |
3 ms |
332 KB |
Output is correct |
12 |
Correct |
3 ms |
332 KB |
Output is correct |
13 |
Correct |
3 ms |
332 KB |
Output is correct |
14 |
Correct |
1 ms |
204 KB |
Output is correct |
15 |
Correct |
1 ms |
204 KB |
Output is correct |
16 |
Correct |
4 ms |
332 KB |
Output is correct |
17 |
Correct |
4 ms |
332 KB |
Output is correct |
18 |
Correct |
1 ms |
204 KB |
Output is correct |
19 |
Correct |
1 ms |
204 KB |
Output is correct |
20 |
Correct |
4 ms |
204 KB |
Output is correct |
21 |
Correct |
1 ms |
204 KB |
Output is correct |
22 |
Correct |
5 ms |
332 KB |
Output is correct |
23 |
Correct |
4 ms |
332 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
204 KB |
Output is correct |
2 |
Correct |
39 ms |
460 KB |
Output is correct |
3 |
Correct |
38 ms |
460 KB |
Output is correct |
4 |
Correct |
22 ms |
460 KB |
Output is correct |
5 |
Correct |
22 ms |
476 KB |
Output is correct |
6 |
Correct |
16 ms |
480 KB |
Output is correct |
7 |
Correct |
147 ms |
1260 KB |
Output is correct |
8 |
Correct |
169 ms |
976 KB |
Output is correct |
9 |
Correct |
221 ms |
1656 KB |
Output is correct |
10 |
Correct |
222 ms |
1692 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
204 KB |
Output is correct |
2 |
Correct |
2 ms |
204 KB |
Output is correct |
3 |
Correct |
1 ms |
204 KB |
Output is correct |
4 |
Correct |
1 ms |
204 KB |
Output is correct |
5 |
Correct |
201 ms |
980 KB |
Output is correct |
6 |
Correct |
0 ms |
204 KB |
Output is correct |
7 |
Correct |
0 ms |
204 KB |
Output is correct |
8 |
Correct |
4 ms |
332 KB |
Output is correct |
9 |
Correct |
1 ms |
204 KB |
Output is correct |
10 |
Correct |
2 ms |
332 KB |
Output is correct |
11 |
Correct |
232 ms |
1720 KB |
Output is correct |
12 |
Correct |
393 ms |
1652 KB |
Output is correct |
13 |
Correct |
0 ms |
204 KB |
Output is correct |
14 |
Correct |
4 ms |
332 KB |
Output is correct |
15 |
Correct |
3 ms |
332 KB |
Output is correct |
16 |
Correct |
4 ms |
332 KB |
Output is correct |
17 |
Correct |
1 ms |
204 KB |
Output is correct |
18 |
Correct |
1 ms |
204 KB |
Output is correct |
19 |
Correct |
6 ms |
332 KB |
Output is correct |
20 |
Correct |
4 ms |
332 KB |
Output is correct |
21 |
Correct |
1 ms |
204 KB |
Output is correct |
22 |
Correct |
2 ms |
204 KB |
Output is correct |
23 |
Correct |
4 ms |
332 KB |
Output is correct |
24 |
Correct |
2 ms |
204 KB |
Output is correct |
25 |
Correct |
4 ms |
332 KB |
Output is correct |
26 |
Correct |
5 ms |
332 KB |
Output is correct |
27 |
Correct |
40 ms |
464 KB |
Output is correct |
28 |
Correct |
41 ms |
476 KB |
Output is correct |
29 |
Correct |
20 ms |
460 KB |
Output is correct |
30 |
Correct |
20 ms |
480 KB |
Output is correct |
31 |
Correct |
16 ms |
332 KB |
Output is correct |
32 |
Correct |
158 ms |
1284 KB |
Output is correct |
33 |
Correct |
169 ms |
976 KB |
Output is correct |
34 |
Correct |
226 ms |
1644 KB |
Output is correct |
35 |
Correct |
231 ms |
1676 KB |
Output is correct |
36 |
Correct |
325 ms |
1412 KB |
Output is correct |
37 |
Correct |
444 ms |
1620 KB |
Output is correct |
38 |
Correct |
271 ms |
1128 KB |
Output is correct |
39 |
Correct |
459 ms |
1648 KB |
Output is correct |
40 |
Correct |
451 ms |
1652 KB |
Output is correct |