№1082
http://acm.timus.ru/problem.aspx?space=1&num=1082
ЖМИ ДАЛЕЕ>>>
РЕШЕНИЕ:
PASCAL
{A}
Var
I,N: Longint;
Begin
Readln(N);
For I:=1 to N do begin
Write(I);
IF I<>N then Write(' ');
End;
end.
1082. Иванушка-дурачок
Ограничение времени: 1.0 секунды
Ограничение памяти: 16 МБ
Ограничение памяти: 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 |
Автор задачи: Никита Шамгунов
Источник задачи: Третье командное соревнование школьников Свердловское области по программированию, 4 марта 2001
Источник задачи: Третье командное соревнование школьников Свердловское области по программированию, 4 марта 2001