Решение задачи "Длинное число" с Codeforces

Без пояснения   Просмотров: 10


Вам дано длинное десятичное число a, состоящее из n цифр от 1 до 9. Также мы определили функцию f, которая отображает каждую цифру от 1 до 9 в какую-то (возможно, ту же самую) цифру от 1 до 9.

Вы можете применить следующую операцию не более одного раза: выбрать непустой непрерывный подотрезок цифр из a, и заменить каждую цифру x из этого подотрезка на f(x). Например, если a=1337, f(1)=1, f(3)=5, f(7)=3, и вы замените подотрезок из трех последних цифр, результатом будет число 1553.

Какое максимальное число вы можете получить, если примените эту операцию не более одного раза?

Код

#include<cstdio>
int main() {
	char s[200001];
	int n, i, f[10];
	scanf("%d\n%s", &n, s);
	for (i = 1; i <= 9; i++)
		scanf("%d", &f[i]);
	for (i = 0; s[i]; i++) if (s[i] - '0' < f[s[i] - '0']) {
		while (s[i] && s[i] - '0' <= f[s[i] - '0']) {
			s[i] = f[s[i] - '0'] + '0';
			i++;
		}
		break;
	}
	puts(s);
	return 0;
}

         

 Администратор Photo Автор: Администратор


Отправить решение задачи
Чтобы отправить решение вам нужно войти в систему или зарегистрироваться

Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться