Задача 1. Пароль

Входной файл:password.in   Ограничение времени:1 сек
Выходной файл:password.out   Ограничение памяти:256 Мб
Максимальный балл:100  

Условие

Участник олимпиады разбирается с программой, которая шифрует пароль входа в систему. После работы эта программа выдает два натуральных числа, причем второе число получено из первого в результате замены некоторой непустой группы подряд идущих цифр первого числа на их сумму. Известно, что пароль —– это группа цифр первого числа, замененная на их сумму во втором числе.

Требуется написать программу, которая по двум числам определяет номера позиций первой и последней цифры группы, являющейся искомым паролем.

Формат входного файла

Входной файл содержит две строки. В первой строке записано первое число, во второй строке —– второе число. Гарантируется, что числа не начинаются с нуля.

Формат выходного файла

Выходной файл должен содержать два разделённых пробелом числа —– номера позиций первой и последней цифры группы, которая была заменена в первом числе. Если решений несколько, можно вывести любое из них. Гарантируется, что решение существует.

Ограничения

Первое число состоит из не более чем 100 000 цифр.

Примеры тестов

Входной файл (password.in) Выходной файл (password.out)
1
2148
213
2 4
2
8
8
1 1
3
1223
1223
1 1
4
10002
1002
1 2

Задача 2. Вирусы и антивирусы

Входной файл:virus.in   Ограничение времени:2 сек
Выходной файл:virus.out   Ограничение памяти:256 Мб
Максимальный балл:100  

Условие

Антивирусная IT-компания имеет официальную иерархическую структуру управления. В ней есть босс – единственный сотрудник, над которым нет начальника. Каждый из остальных сотрудников подчинён ровно одному сотруднику – своему начальнику. Начальник может иметь нескольких подчинённых и отдавать или передавать приказы любому из них. Приказы могут передаваться от одного сотрудника другому только по цепочке, каждый раз от начальника к его подчинённому.

Сотрудник А главнее сотрудника Б в этой иерархии, если А может отдать или передать приказ сотруднику Б непосредственно, или через цепочку подчинённых. Босс главнее любого сотрудника.

Оказалось, что все сотрудники объединены ещё в одну организованную подобным образом тайную иерархическую структуру, производящую компьютерные вирусы. В тайной структуре может быть другой босс, а у сотрудников – другие начальники.

Будем называть пару сотрудников А и Б устойчивой, если А главнее Б и в основной, и в тайной иерархических структурах.

Требуется написать программу, определяющую количество устойчивых пар в компании.

Формат входного файла

В первой строке задано число N – количество сотрудников компании. Во второй строке – N целых чисел ai, где ai = 0, если в официальной иерархии сотрудник с номером i является боссом, в противном случае ai равно номеру непосредственного начальника сотрудника номер i. В третьей строке – N целых чисел bi, где bi = 0, если в тайной иерархии сотрудник с номером i является боссом, в противном случае bi равно номеру непосредственного начальника сотрудника номер i. Нумерация сотрудников ведется с единицы в том порядке, в каком они упомянуты во входном файле.

Формат выходного файла

Выходной файл должен содержать единственное число – количество устойчивых пар.

Ограничения

2 ≤ N ≤ 100 000.

Примеры тестов

Входной файл (virus.in) Выходной файл (virus.out)
1
3
0 3 1
0 1 1
2
2
5
2 0 1 3 4
3 1 0 2 4
7

Задача 3. Урюк

Входной файл:apricot.in   Ограничение времени:1 сек
Выходной файл:apricot.out   Ограничение памяти:256 Мб
Максимальный балл:100  

Условие

В давние времена Золотая Орда ежегодно собирала дань золотыми монетами. Известный крымский хан Гирей решил схитрить: выплачивая дань из N золотых монет, он подложил среди них одну фальшивую – более легкую монету. Об этом донесли казначею Золотой Орды. Для обнаружения подделки он решил использовать магические весы, работающие на урюке.

На чаши магических весов кладутся две кучи монет. Весы устанавливают, совпадает или различается вес этих куч. При этом, если кучи имеют разный вес, то весы указывают, какая из куч легче. При совпадении веса обеих куч весы требуют R плодов урюка, а при несовпадении – U плодов.

Казначей, сам любитель урюка, хочет и фальшивую монету обнаружить, и сэкономить на урюке.

Требуется написать программу, которая по заданному количеству монет N, при условии, что только одна из них легче других, укажет минимальное количество урюка, с помощью которого эта фальшивая монета гарантированно будет обнаружена.

Формат входного файла

Во входном файле в единственной строке находятся три целых числа N, R и U, где N – количество монет, R – количество плодов урюка, затрачиваемых в случае совпадения веса куч монет, U – количество плодов урюка, затрачиваемых в случае их различия. Все числа разделены пробелом.

Формат выходного файла

Выходной файл должен содержать одно число – минимальное количество урюка, с помощью которого гарантированно будет обнаружена фальшивая монета.

Ограничения

2 ≤ N ≤ 1 000 000, 1 ≤ R, U ≤ 1 000 000.

Примеры тестов

Входной файл (apricot.in) Выходной файл (apricot.out)
1
4 3 1
2
2
3 3 1
3
3
15 2 3
8
4
10 2 1
3

0.210s 0.026s 11