Темы
    Информатика(2656 задач)
---> 304 задач <---
Источники --> Личные олимпиады --> Всероссийская олимпиада школьников
    Муниципальный этап(80 задач)
    Окружная олимпиада(18 задач)
    Региональный этап(109 задач)
    Заключительный этап(97 задач)
Страница: << 44 45 46 47 48 49 50 >> Отображать по:
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
64 megabytes

У бизнесмена есть телефон, который он использует для связи с партнерами по бизнесу. Сегодня у предпринимателя запланировано n разговоров, про каждый из которых известно число Pi — сколько рублей прибыли получит бизнесмен, если i-й разговор состоится (Pi может быть равно 0 — в этом случае никакой выгоды от i-го разговора нет).

Телефон у бизнесмена сделан по новейшим технологиям, но иногда барахлит. Сегодня, например, телефон внезапно разрядился, поэтому он позволит бизнесмену провести только первые A0 разговоров, а затем выключится до конца дня. Однако телефон можно зарядить, пропустив несколько первых запланированных разговоров. Более формально, если предприниматель будет заряжать телефон вместо первых j разговоров (то есть разговоров с номерами от 1 до j), то он потом сможет провести ровно Aj разговоров (с номерами от j + 1 до min(n, j + Aj)), после чего телефон опять же перестанет работать до конца дня.

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

Входные данные

На вход программе дается целое число n — количество запланированных звонков (1 ≤ n ≤ 2·105). На следующей строке вводятся через пробел \(n\) целых чисел Pi, обозначающие прибыли от звонков (0 ≤ Pi ≤ 1 000). Затем вводятся \(n+1\) целых чисел Aj, обозначающие, сколько звонков можно будет провести после подзарядки (0 ≤ Aj ≤ 106).

Выходные данные

Выведите два числа, первое — это максимальная выгода, которую может получить бизнесмен, второе — количество пропущенных первых звонков, при котором она получается (0, если выгоднее всего не заряжать телефон вовсе).

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

Входные данные
5
1 2 0 4 1
2 0 8 3 5 6
Выходные данные
5 3

Примечание

Рассмотрим пример из условия: n = 5, P1 = 1, P2 = 2, P3 = 0, P4 = 4, P5 = 1, A0 = 2, A1 = 0, A2 = 8, A3 = 3, A4 = 5, A5 = 6.

Если бизнесмен не будет заряжать телефон, то результат будет равен P1 + P2 = 1 + 2 = 3 рубля. Если предприниматель будет заряжать телефон вместо первого звонка, то он не сможет позвонить ни разу, так как A1 = 0. Если вместо первых двух звонков, то результат составит P3 + P4 + P5 = 0 + 4 + 1 = 5 рублей. Если вместо первых трех, то P4 + P5 = 4 + 1 = 5. Если вместо четырёх звонков, то P5 = 1 рубль. Наконец, если бизнесмен будет заряжать телефон вместо всех n = 5 звонков, то он заведомо ничего не получит. Таким образом, два лучших варианта — это заряжать либо вместо 2 первых звонков, либо вместо 3, в обоих случаях получаем 5 рублей прибыли. По условию, из них мы выбираем выбираем вариант с 3 пропущенными звонками.

Тесты к этой задаче состоят из трех групп.

  • Тест 1 — тест из условия, оценивается в ноль баллов.
  • Тесты 2 – 19. В тестах этой группы 1 ≤ n ≤ 104. Эта группа оценивается в 50 баллов, баллы ставятся только при прохождении всех тестов группы.
  • Тесты 20 – 36. В тестах этой группы дополнительные ограничения отсутствуют. Группа оценивается в 50 баллов, баллы ставятся только при прохождении всех тестов этой и предыдущих групп.

ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
64 megabytes

Рано утром Вася решил сделать домашнее задание по информатике. Начать выполнение задания Вася решил с поиска подходящей тетрадки. Добравшись до ящика с чистыми тетрадями, он открыл одну из них. Вася ещё не до конца проснулся и поэтому видит только часть тетрадки и не может сообразить, какая это тетрадка: в клетку, в линейку или в вертикальную линейку. Помогите ему это сделать.

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

Тетрадкой в клетку называется тетрадка, в которой содержатся вертикальные и горизонтальные линии. Тетрадкой в линейку называется тетрадка, в которой содержатся только горизонтальные линии. Тетрадкой в вертикальную линейку называется тетрадка, в которой содержатся только вертикальные линии.

Известно, что в целой тетрадке все расстояния между линиями одинаковы (то есть все клетки — квадраты, все линейки одинаковой ширины). Гарантируется, что линии не могут располагаться рядом (между ними всегда есть промежуток).

Вам требуется написать программу, которая определит тип тетрадки или скажет, что это невозможно однозначно сделать по данной таблице.

Входные данные

В первой строке входных данных даны целые числа n и m (1 ≤ n, m ≤ 1 000) — количество строк и столбцов в таблице. Следующие n строк по m чисел содержат целые числа ai, j (0 ≤ ai, j ≤ 1) — элементы таблицы, задающие видимую часть тетради.

Выходные данные

Требуется вывести одну из строк:

  • «Square», если заданная тетрадка расчерчена в клетку;
  • «Line», если тетрадка расчерчена в линейку;
  • «Vertical line», если тетрадка расчерчена в вертикальную линейку;
  • «?», если невозможно однозначно определить, к какому типу относится данная тетрадь.

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

Входные данные
3 5
00100
11111
00100
Выходные данные
Square
Входные данные
4 5
11111
00000
11111
00000
Выходные данные
Line
Входные данные
5 5
00000
00000
11111
00000
00000
Выходные данные
?

Примечание

В данной задаче баллы за каждый тест начисляются независимо от прохождения остальных тестов и суммируются.

ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
256 megabytes

На день рождения Егору подарили волшебный квадрат.

Волшебный квадрат — это таблица 3 × 3, в каждой из ячеек которой находятся числа от 0 до 9. Егор придумал следующую игру с волшебным квадратом: он загадывает число N и пытается так поставить числа в каждую ячейку квадрата, чтобы сумма чисел в каждой строке и каждом столбце была равна в точности N.

Пусть расстановка — это волшебный квадрат, заполненный числами. Тогда расстановки A и B считаются различными, если хотя бы для каких-то строки x и столбца y выполняется неравенство Ax, y ≠ Bx, y, где Ax, y и Bx, y — это числа, находящиеся в строке x и столбце y в расстановках A и B соответственно.

Егор задумался, сколько всего существует различных расстановок таких, что сумма в каждой строке и в каждом столбце была равна в точности N.

Напишите программу, которая поможет ответить на вопрос Егора.

Входные данные

Единственная строка входных данных содержит целое число N (0 ≤ N ≤ 109).

Выходные данные

Требуется вывести одно число — искомое количество расстановок.

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

Входные данные
0
Выходные данные
1

Примечание

В примере из условия существует всего одна допустимая расстановка — это таблица 3 × 3, состоящая из нулей. Очевидно, что сумма элементов в любой строке или столбце в такой расстановке равна 0.

ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
256 megabytes

В одном известном всем городе скоро стартуют Зимние Олимпийские игры. В связи с этим организаторы игр решили провести эстафету Олимпийского огня — самую продолжительную и масштабную в истории Олимпийских игр. Эстафета состоит из N этапов, каждый длиной ai километров (1 ≤ i ≤ N). У организаторов имеется бесконечное количество олимпийских факелов, каждый из которых может непрерывно гореть на протяжении K километров забега. По правилам эстафеты каждый факел используется только один раз. В начале каждого этапа участникам эстафеты выдаётся некоторое число факелов, такое, чтобы олимпийский огонь удалось донести до конца этапа. По окончании этапа все использованные (полностью или частично) факелы передаются в дар своим факелоносцам.

В процессе подготовки эстафеты выяснилось, что последовательно идущие этапы можно объединить в один этап, и таким образом на проведение эстафеты потребуется меньше факелов. Однако по соображениям техники безопасности нельзя объединять больше, чем M подряд идущих этапов.

Напишите программу, которая по известной схеме эстафеты Олимпийского огня определяет, какое максимальное число факелов можно «сэкономить» и какие этапы для этого нужно объединить.

Входные данные

В первой строке заданы 3 натуральных числа N, M и K (N ≤ 106, M ≤ 10, K ≤ 108).

Во второй строке заданы N натуральных чисел ai (ai ≤ 109).

Выходные данные

В первой строке выведите одно натуральное число F — на сколько можно максимально сократить количество используемых факелов на протяжении всей эстафеты.

Во второй строке выведите одно натуральное число P — количество групп объединённых этапов.

Затем в P строках выведите сами группы — по 2 натуральных числа si и ci, где si — номер первого этапа в группе, а ci — количество этапов в группе. Все si должны идти в порядке возрастания, а ci не превосходить M. Если существует несколько оптимальных решений, разрешается вывести любое.

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

Входные данные
5 3 3
1 1 1 3 3
Выходные данные
2
1
1 3
Входные данные
6 3 3
1 1 1 1 1 1
Выходные данные
4
2
1 3
4 3
Входные данные
5 5 2
2 4 6 8 10
Выходные данные
0
0

ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
256 megabytes

«Sam Topge был найден мертвым в своей квартире» — большими буквами было написано на обложке местной газетки, которую так любил читать дома по вечерам Мистер Холмс. "Уже четвертый иностранец за месяц", — грустно подумал он. — "Завтра будет много работы". Холмс выключил свет и, повалившись на кровать от усталости, сладко уснул.

Мистер Холмс работает детективом, и, конечно же, именно ему поручено исследовать дело об этом серийном убийце. "Никаких улик, никаких следов борьбы. Как тут вообще что-то можно найти? Даже медики не могут определить, как они умерли", — думал он, сидя на работе. Никакой зацепки не было, можно было надеяться только на чудо.

Проведя весь день на работе, безуспешно пытаясь найти хоть какую-нибудь маленькую улику, мистер Холмс, грустный и уставший, потопал домой. Шел он, как обычно, через лавку с газетами, чтобы купить свежий выпуск его любимой газеты. "Здравствуйте, Чед, мне как обычно" — "Вы выглядите неважно, мистер Холмс. Возьмите отпуск, отдохните. Вот, держите газету". "Спасибо за совет", — ответил Холмс, взял газету и побрел домой.

Поужинав, Холмс сел на свое любимое кресло перед камином, и, достав свою любимую газету, расслабился после тяжелого рабочего дня. "Что-то не так", — подумал он, увидев в своей привычной газете другой шрифт и формат текста. Он почувствовал, что и бумага недостаточно мягкая, как полагается его любимой газете. "Что мне подсунули? Это не та газета!" — снова напрягся Холмс. "«Stopgame». Ну что за заголовок? Что это за странная газета? Ненавижу этот день!". Холмс бросил газету в камин, и отправился спать.

Под утро у детектива не вылетало из головы название газеты. "Stopgame... Stopgame... Как будто я уже недавно это где-то видел..." — думал он, идя на работу.

"Точно!" — громко воскликнул Холмс в полицейском участке, чем привлек внимание всех вокруг. Детектив быстро взял какую-то бумажку, написал на ней «Stopgame», порвал ее на несколько частей и сложил их. "Sam Topge", — обрадовался Холмс. — "Но почему? Может, это случайность?". Детектив выскочил из участка и побежал к продавцу газет.

"Вы мне вчера дали не ту газету!" — запыхавшись, сказал Холмс — "Дайте мне такую же, пожалуйста, на ней написано «Stopgame»". Чед хотел было извиниться, но, видя сияющие глаза Холмса, понял, что, кажется, он ему только помог. Чед протянул Холмсу газету, тот выхватил ее из рук и принялся спешно читать ее.

"Какая-то статья про зависимых от компьютерных игр детей... Ничего интересного. Может, просто совпадение?" — подумал Холмс, взял газету, и пошел обратно в офис.

Перечитав газету, Холмс не нашел ничего интересного. Посмотрел данные о самой газете — уже более десяти лет она продается в ближайших районах. Потеряв надежду, Холмс отбросил газету на дальний край своего стола и принялся снова искать зацепки.

Прошло еще 3 дня. Холмс потерян. "Их убивает что-то изнутри. Что-то просто отнимает у них жизнь. И уже довольно скоро появится новая жертва. Все они умирают вечером, все во вторник. А завтра вторник. Нужно срочно что-то делать". Холмс увидел отброшенную газету, и его посетила одна гениальная мысль.

Холмс рванул в дома, где жили иностранцы. У каждого из них он нашел эту газету последнего выпуска, которую еще могли купить убитые. "Бинго! Зацепка!" — возрадовался Холмс. — "Имя каждого из убитых — подпоследовательность букв из заголовка газеты!". "Кто же это мог быть? Как эти имена так удивительно могут образовывать другие слова?". Холмс решил проверить сотрудников редакции газеты. Оказалось, главный по заголовкам в последнее время работает на дому. "Мы его видели за странным делом", — говорят сотрудники, — "он нарезал бумагу и клеил в странную кожаную потертую тетрадку".

Холмс работал всю ночь напролет. Он выяснил, кто этот сотрудник, и узнал, что всех этих иностранцев он знал — они вместе воевали. Под утро Холмс решил навестить его. Но не тут-то было: его не было дома.

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

"Он в своем доме, делает что-то странное", — сообщили ему коллеги. И тут Холмс понял, что у него совсем мало времени. Но Холмс хочет знать точно, сколько времени убийца потратит на разрезание названия газеты. "Эй, Ватсон, посчитай мне быстро, сколько разрезов ему нужно сделать, чтобы собрать имя и фамилию убитого?" Сегодня Ватсон — это вы. Помогите Холмсу определить минимальное количество времени, которое уйдет у убийцы на разрезание названия газеты.

Входные данные

Длину строки q обозначим как |q| (|abac| = 4, |sam| = 3). Во входном файле содержатся 3 строки s, t1, t2 (|s| = |t1| + |t2|, 1 ≤ |t1|, |t2| ≤ 1 000). Все строки содержат только маленькие латинские буквы.

Выходные данные

Подстрокой p[l, r] назовем строку, состоящую из символов pl, pl + 1, ..., pr - 1, pr, где pi — i-тый символ строки pcde» является подстрокой строки «abcdef», «bcf» — не является).

Тогда любую строку p можно представить в виде разбиения на непересекающиеся подстроки p[x0 + 1, x1] + p[x1 + 1, x2] + p[x2 + 1, x3] + ... + p[xn - 1 + 1, xn], где 0 = x0 < x1 < x2 < ... < xn - 1 < xn = |p|. При этом длиной разбиения будем называть количество чисел xi, то есть число n.

В данной задаче требуется найти разбиение строки s такое, чтобы из получившихся подстрок можно было сложить строки t1 и t2, не нарушая порядка, в котором подстроки шли в исходной строке. Например, из строки «adbc» нельзя будет выложить слова «cad» и «b», так как порядок подстрок «ad» и «c» будет нарушен.

Программа должна выдавать на экран одно число — минимально возможную длину такого разбиения, то есть количество разрезов, которые потребуется сделать убийце.

Гарантируется, что существует разбиение строки s хотя бы одним способом, чтобы получились строки t1 и t2.

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

Входные данные
stopgame
sam
topge
Выходные данные
3
Входные данные
ababbaba
abbb
abaa
Выходные данные
4

Примечание

В первом примере из условия строку можно разрезать следующим образом: stopgame s|topg|am|e.

Во втором примере: ababbaba ab|abb|a|b|a.


Страница: << 44 45 46 47 48 49 50 >> Отображать по:
Выбрано
:
Отменить
|
Добавить в контест