Submission #421889

#TimeUsernameProblemLanguageResultExecution timeMemory
421889Drew_Sequence (BOI14_sequence)C++17
25 / 100
10 ms888 KiB
#include <iostream>
using namespace std;

const int MAX = 1e5 + 69;

int n;
int ar[MAX];
int val0[6] = {1, 10, 100, 1000, 10000, 100000};
int val1[6] = {1, 11, 111, 1111, 11111, 111111};

inline bool yes(int num)
{
	for (int i = 0; i < n; ++i)
	{
		bool ok = false;
		int tmp = num + i;

		while (tmp)
		{
			if (tmp % 10 == ar[i]) { ok = true; break; }
			tmp /= 10;
		}

		if (!ok)
			return false;
	}
	return true;
}

inline int brute()
{
	for (int i = 1;; ++i)
	{
		if (yes(i))
			return i;
	}
	return -1;
}

inline int greedy()
{
	if (ar[0] == 0)
	{
		int id = -1;
		for (int i = 0; i < 6; ++i)
		{
			if (val1[i] >= n)
			{
				id = i;
				break;
			}
		}

		int res = 10;
		for (int i = 0; i < id; ++i)
			res *= 10;
		return res;
	}
	else if (ar[0] <= 8)
	{

		int id = -1;
		for (int i = 0; i < 6; ++i)
		{
			if (val0[i] >= n)
			{
				id = i;
				break;
			}
		}

		int res = ar[0];
		for (int i = 0; i < id; ++i)
			res *= 10;
		return res;
	}
	else
	{

		int id = -1;
		for (int i = 0; i < 6; ++i)
		{
			if (val1[i] >= n)
			{
				id = i;
				break;
			}
		}

		int res = 0;
		for (int i = 0; i < id; ++i)
			res = res * 10 + 8;
		return res * 10 + 9;
	}
}

int main()
{
	ios :: sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);

	cin >> n;
	for (int i = 0; i < n; ++i)
		cin >> ar[i];
	cout << greedy() << '\n';;


	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...