Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
tasks.doc
Скачиваний:
0
Добавлен:
14.07.2019
Размер:
70.14 Кб
Скачать

Исходные данные

В первой строке входных данных к этой задаче находится единственное число N, 1 ≤ N ≤ 100 — количество членов Марсианского Планетарного Совета. По многовековой традиции все члены Совета нумеруются целыми числами от 1 до N. Далее следуют ровно N строк, причем i-тая строка содержит список детей члена Совета с порядковым номером i. Список детей представляет собой последовательность порядковых номеров детей, разделенных пробелами и следующих в произвольном порядке. Список детей может быть пустым. Список детей (даже если он пуст) оканчивается нулем.

Результат

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

Пример

исходные данные

результат

5

0

4 5 1 0

1 0

5 3 0

3 0

2 4 5 3 1

Задание №5. Иванушка-дурачок

Ограничение времени: 1.0 секунды Ограничение памяти: 16 МБ

В некотором царстве, в некотором государстве жил-был царь, и была у него дочь — Василиса Прекрасная. Многие хотели жениться на ней, но она всем отказывала. Надоело это царю, рассердился он и повелел: "Первый, кто решит мою задачку, получит Василису Прекрасную в жёны". Решил тогда Иванушка-дурачок счастья попытать. Пришёл к царю, а тот ему и говорит: "Вот тебе программка, введи ей N чисел, она тебе и выведет на ком жениться. Даю тебе день на размышления". Посмотрел Иванушка на программу ту и запечалился: буквы какие-то непонятные, значки всякие, тут не только дурак, но и умный голову сломает. А между тем время кончается. Так и не придумал Иванушка ничего.

А программка та была вот такая:

На языке C

На языке Pascal

#include <stdio.h>

long c;

long A[N];

long P(long l, long r)

{

long x=A[l],

i=l-1,

j=r+1,

t;

while(1)

{

do{--j; ++c;}

while(A[j]>x);

do{++i; ++c;}

while(A[i]<x);

if(i<j)

{

t=A[i];

A[i]=A[j];

A[j]=t;

}

else return j;

}

}

void Q(long l, long r)

{

long n;

if(l<r)

{

n=P(l,r);

Q(l,n);

Q(n+1,r);

}

}

int main(void)

{

c=0;

for(long i=0; i<N; ++i)

scanf("%ld", &A[i]);

Q(0,N-1);

if(c==(N*N+3*N-4)/2)

printf

("Василиса Прекрасная");

else printf

("Кощей Бессмертный");

return 0;

}

var A:array [1..N] of

longint;

c:longint;

i:integer;

function

P(l,r:longint):longint;

var i,j,t,x:longint;

begin

x:=A[l]; i:=l-1; j:=r+1;

while true do

begin

repeat dec(j);inc(c)

until A[j]<=x;

repeat inc(i);inc(c)

until A[i]>=x;

if i<j then

begin

t:=A[i];

A[i]:=A[j];

A[j]:=t

end

else

begin P:=j; exit end

end

end;

procedure Q(l,r:longint);

var n:longint;

begin

if l<r then

begin

n:=P(l,r);

Q(l,n);

Q(n+1,r)

end

end;

begin

c:=0;

for i:=1 to N do

read(A[i]);

Q(1,N);

if c=(N*N+3*N-4) div 2

then

writeln

('Василиса Прекрасная')

else writeln

('Кощей Бессмертный');

end.

Теперь, когда вы знаете программу, вы можете попытаться помочь Иванушке.

Исходные данные

В первой строке содержится положительное число N ≤ 1000.

Результат

Вы должны вывести N чисел в одной строке таких, что если ввести их в программу, данную царём, то она выдаст "Василиса Прекрасная". Числа должны быть разделены пробелами. Если возможно несколько вариантов, выведите любой.

Пример

исходные данные

результат

3

3 7 19

Задание № 6. Сумма двух чисел

Ограничение времени: 1.0 секунды Ограничение памяти: 16 МБ

Вычислите a+b

Исходные данные

a и b

Результат

a+b

Пример

исходные данные

результат

1 5

6

Подсказка

Используйте +

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]