Заочная олимпиада по программированию для школьников - 2011 год

Знаковые события в научной и общественной жизни вуза.

Модератор: xdsl

Заочная олимпиада по программированию для школьников - 2011 год

Сообщение xdsl 14 янв 2011, 14:48

26-27 февраля 2011 года (см. https://shgpi.edu.ru/forum/viewtopic.php?p=3544#p3544) в рамках "Межрайонной Декады Информатики для школьников Курганской области с участием школьников других областей" факультет информатики проводит заочную олимпиаду по программированию для школьников.

Заочная олимпиада по программированию проводится в телекоммуникационном режиме. Задания олимпиады будут опубликованы на сайте ГОУ ВПО «ШГПИ» (shgpi.edu.ru), а также здесь, на форуме, 26.02.2011 года в 14 ч. (12.00ч по московскому времени) . Решения (два файла: исходный текст программы на одном из распространенных языков программирования и исполняемый файл) необходимо отправить по электронной почте (olimp_shgpi@list.ru) до 14 ч. (12.00 ч. по московскому времени) 27.02.2011г.

Олимпиада проводится в объеме теоретических знаний и практических навыков программирования. Школьники могут получить доступ к условиям задач студенческих олимпиад прошлых лет (2007-2010 годов) и попробовать свои силы в их решении с помощью системы эталонных решений Solver (http://shgpi.edu.ru/solver/0.1c/). Для любителей минимализма в интерфейсе доступна предыдущая версия системы (http://shgpi.edu.ru/solver/0.1b/). Там-же будут опубликованы условия задач школьной олимпиады и предоставлены возможности для проверки результатов их решений.

В оргкомитет олимпиады входят два человека: Пирогов Владислав Юрьевич (к.п.н, профессор, зав. кафедрой Прикладной Информатики и Экономики, ник в форуме - Vladislav_133) и Слинкин Дмитрий Анатольевич (к.п.н, доцент, преподаватель программирования кафедры Программирования и Сетевых Технологий, зав. Вычислительным Центром ШГПИ, ник в форуме - xdsl). Нам помогает Степановских Наталья Александровна (ассистент кафедры Программирования и Сетевых Технологий, ник в форуме - sonchik).

Оргкомитет олимпиады самостоятельно придумывает и прорешивает олимпиадные задачи. Любые совпадения условий задач нашей олимпиады с олимпиадными задачами всероссийских и международных олимпиад чаще всего случайны. Изредка сторонние олимпиадные задачи берутся за основу при создании наших задач.
xdsl
 
Сообщения: 1236
Зарегистрирован: 09 дек 2008, 05:16
Откуда: ВЦ ШГПИ
Полное имя: Слинкин Д.А.

Re: Заочная олимпиада по программированию для школьников - 2011 год

Сообщение xdsl 03 фев 2011, 10:38

В связи с карантином по гриппу заочная олимпиада для школьников переносится с 12-13 февраля на 26-27 февраля (http://shgpi.edu.ru/f11/news/2011/perenos-dekady-karantin/)
xdsl
 
Сообщения: 1236
Зарегистрирован: 09 дек 2008, 05:16
Откуда: ВЦ ШГПИ
Полное имя: Слинкин Д.А.

Re: Заочная олимпиада по программированию для школьников - 2011 год

Сообщение Vladislav_133 26 фев 2011, 13:48

Начало олимпиады!

Участникам предлагается 5 задач, за верное решение которых можно набрать максимум 32 балла.

Задача 1. Прямоугольники (8 очков).
Рассмотрим множество прямоугольников на плоскости. Будем рассматривать только такие прямоугольники, стороны которых параллельны осям координат. Тогда любой из прямоугольников можно задать двумя координатами левого нижнего угла (x,y) и длинами сторон (dx,dy), где dx - длина сторон, параллельной оси 0X, dy - длина стороны, параллельной оси 0Y. Для простоты будем считать, что все прямоугольники находятся в первом квадранте т.е. все координаты x>=0 и y>=0.
Входной файл (input.txt) содержит параметры нескольких прямоугольников: в каждой строке - четыре числа x y dx dy, отделенных друг от друга пробелами. Количество прямоугольников произвольно.
Получить множество координат точек пересечения прямоугольников. Выходной файл (output.txt) должен содержать множество координат точек: x y - пара координат, отделенных друг от друга пробелами. В одной строке - одна пара координат. Если точек пересечения нет, то выходной файл должен содержать одно слово Empty.

Пример.
Файл input.txt
4 2 4 3
6 3 6 4
14 3 5 4
Файл output.txt
8 3
5 6

Задача 2. Директор школы принимает решение (8 очков).

Директор сельской школы решил отправить своих учеников на представление приехавшего в город цирка. Для отправки можно использовать автобус и маршрутное такси. Количество человек, которое может перевести автобус равно N, количество человек, которое может перевезти маршрутное такси - M. Стоимость автобуса составляет X рублей, стоимость маршрутного такси - Y рублей. Школьников надо увезти и доставить в цирк одновременно. Написать программу, которая бы определила количество автобусов и маршрутных такси для перевозки школьников, чтобы сумма оплаты проезда была бы минимальной.
Входной файл input.txt содержит стоимость заказа автобуса (X) и маршрутного такси (Y), количество посадочных мест (N и M), а также количество школьников, пожелавших ехать в цирк (K). Числа записываются через пробел
X Y N M K .
Выходной файл должен содержать количество автобусов и такси, которые должен заказать директор, чтобы сумма оплаты была минимальной.

Пример.
Файл input.txt
700 200 30 8 41

Файл output.txt
1 2

Т.е. в этом случае придется заказать один автобус и два такси.
Не исключено, что при некоторых входных значениях, возможно не одно решение, приводящее к одной и той-же сумме. В решении должен присутствовать только один вариант - все равно какой. Для простоты примем, что все входные параметры могут принимать значения от 1 до 30000.

Задача 3. Найти все подчисла (4 очка).
Пусть имеется строка, состоящая из N цифр (0-9). Значение N может быть довольно велико, но примем что N>0 и N<250. Необходимо найти все подстроки, количество разрядов в которых от 1 до 4, представляющие запись числа, неравного нулю и кратного 3.
Входной файл input.txt содержит строку, состоящую из цифр.
Выходной файл output.txt содержит все подчисла, делящиеся на 3 (по одному в строке).

Например.
Файл input.txt
1136

Файл output.txt
3
36

Важное замечание.
Если в начале подчисла идут нули, то они игнорируются.
Т.е., например, считается, что подстрока 0000100 содержит всего три разряда.

Задача 4. Две строки (4 очка).
Даны две строки a и b. Можно ли получить строку b из строки a, путем вычеркивания символов из строки a.
Входной файл input.txt содержит строки a и b.
Выходной файл содержит в первой строке слов Yes или слово No.

Например.
Файл input.txt.
abcdef
acd

Файл output.txt
Yes

Задача 5. Ваш ход, маэстро (8 очков).
Все хорошо знают игру, крестики-нолики. Задача состоит в следующем. Пусть дана некоторая позиция. Ход делает программа. Пусть программа ставит крестики. Нужно определить, может ли выиграть программа в один ход.
Входной файл input.txt содержит позицию в игре крестики-нолики.
Выходной файл содержит все возможные ходы (координаты клетки), приводящие к победе.

Пример.
Файл input.txt
1 0 -1
0 1 1
0 0 -1
Файл output.txt
0 2

Пояснения.
1 - обознаает "крестик".
0 - "нолик".
-1 - пустую клетку.
Каждая клетка имеет координаты. Система координат: начало в левом нижнем углу. Левая нижняя клетка имеет координаты 0 0.
Аватара пользователя
Vladislav_133
Elite
 
Сообщения: 1386
Зарегистрирован: 13 дек 2008, 18:08
Полное имя: П.В.Ю.

Re: Заочная олимпиада по программированию для школьников - 2011 год

Сообщение Vladislav_133 26 фев 2011, 15:19

Олимпиада началась. Задачи в целом не сложные и не требуют каких-либо особых навыков решения олимпиадных заданий.
Аватара пользователя
Vladislav_133
Elite
 
Сообщения: 1386
Зарегистрирован: 13 дек 2008, 18:08
Полное имя: П.В.Ю.

Re: Заочная олимпиада по программированию для школьников - 2011 год

Сообщение Vladislav_133 26 фев 2011, 16:43

Буду постоянно находится в онлайне. Задавайте вопросы.
Аватара пользователя
Vladislav_133
Elite
 
Сообщения: 1386
Зарегистрирован: 13 дек 2008, 18:08
Полное имя: П.В.Ю.

Re: Заочная олимпиада по программированию для школьников - 2011 год

Сообщение Vladislav_133 26 фев 2011, 22:49

Хм, вопросов нет. Видимо всем все ясно. Ухожу с форума. Выйду завтра утром.
Аватара пользователя
Vladislav_133
Elite
 
Сообщения: 1386
Зарегистрирован: 13 дек 2008, 18:08
Полное имя: П.В.Ю.

Re: Заочная олимпиада по программированию для школьников - 2011 год

Сообщение Vladislav_133 27 фев 2011, 14:24

А школьники так ни одного вопроса и не задали. Боюсь даже представить - неужели все все решили.
Аватара пользователя
Vladislav_133
Elite
 
Сообщения: 1386
Зарегистрирован: 13 дек 2008, 18:08
Полное имя: П.В.Ю.

Re: Заочная олимпиада по программированию для школьников - 2011 год

Сообщение Vladislav_133 27 фев 2011, 16:37

олимпиада закончилась
Аватара пользователя
Vladislav_133
Elite
 
Сообщения: 1386
Зарегистрирован: 13 дек 2008, 18:08
Полное имя: П.В.Ю.

Re: Заочная олимпиада по программированию для школьников - 2011 год

Сообщение xdsl 27 фев 2011, 20:01

Результат - печальный. НУЛЬ! Ни одного письма, ни одного вопроса, ничего. Олимпиада среди школьников закончилась пшиком. И это при том, что сторонних посетителей, активно читающих эту ветку и добравшихся сюда через объявление на портале shgpi.edu.ru, за время проведения олимпиады набралось почти два десятка (судя по журналам веб-сервера).

Неужели перевелись в Курганской области школьники, что-либо понимающие в программировании? Или учителя информатики принципиально программированию не учат? Или в школах не учат даже работе с электронной почтой, поэтому свои решения никто оказался не в состоянии выслать? Или верна Аксиома Коула: "Общая сумма разума на планете - величина постоянная, а население растет..."?

Сплошное разочарование. Думаю, на повторение этого эксперимента мы не решимся еще долгое время, жаль бесцельно потерянного времени.
xdsl
 
Сообщения: 1236
Зарегистрирован: 09 дек 2008, 05:16
Откуда: ВЦ ШГПИ
Полное имя: Слинкин Д.А.

Re: Заочная олимпиада по программированию для школьников - 2011 год

Сообщение Vladislav_133 27 фев 2011, 21:04

Конечно, надо с учителями работать, только вот как.
А я еще переживал, что задачи простые. А может действиетльно простые для наших школьников?
Аватара пользователя
Vladislav_133
Elite
 
Сообщения: 1386
Зарегистрирован: 13 дек 2008, 18:08
Полное имя: П.В.Ю.

Re: Заочная олимпиада по программированию для школьников - 2011 год

Сообщение -TvinKi- 27 фев 2011, 23:13

Здравствуйте. Не ожидала я, что никто не примет участия..( А задачи мне очень понравились. Было огромное желание их решить, но я пока не имею для этого знаний. Так как в школе программирование у нас не преподают и информатики толком нет вообще. Занимаюсь сама. А сейчас времени особо нет, подготовка к экзаменам все отнимает. Если можно, пришлите мне решение хоть какой-нибудь задачи. Я посижу, порешаю, подумаю) nezabudka@glstar.ru
-TvinKi-
 
Сообщения: 11
Зарегистрирован: 12 окт 2010, 17:51
Полное имя: Решетова А В

Re: Заочная олимпиада по программированию для школьников - 2011 год

Сообщение Vladislav_133 28 фев 2011, 22:50

Конечно, решения будут. Постараюсь на форуме выложить.
Аватара пользователя
Vladislav_133
Elite
 
Сообщения: 1386
Зарегистрирован: 13 дек 2008, 18:08
Полное имя: П.В.Ю.

Re: Заочная олимпиада по программированию для школьников - 2011 год

Сообщение Vladislav_133 16 апр 2011, 18:51

Решения
Обещания надо выполнять. Появилось немного времени, поэтому начинаю публиковать решения задач.
Первая задача, которую разбираю - задача о директоре.
Пришлось тряхнуть стариной, поскольку пишу в основном на С, а Паскалем давно не занимался.

Код: Выделить всё
{программа prog.pas}
var
    x,y,n,m,k,i,j,s,s1,i1,j1,t: LongWord;
begin
{ввод данных}
    readln(x,y,n,m,k);....
{временный минимум стоимости проезда,
присваиваем заведомо не достижимое значение}
    s:=x*k+y*k;
{внешний цикл - автобусы}
    i:=0;
    repeat.
      if i=0 then j:=1 else j:=0;
      t:=0;
{внутренний цикл - маршрутки}
      repeat
        s1:=x*i+y*j;{стоимость транспорта}
        t:=i*n+j*m; {количество посадочных мест}
{определение временного минимума - стоимости}
        if (s1<s) and  (t>=k) then
        begin
          s:=s1; i1:=i; j1:=j;
        end;
        inc(j);
     until t>=k;
     inc(i);
until i>(k div n)+1;
writeln(i1,' ',j1);
end.
Последний раз редактировалось Vladislav_133 22 апр 2011, 19:43, всего редактировалось 5 раз(а).
Аватара пользователя
Vladislav_133
Elite
 
Сообщения: 1386
Зарегистрирован: 13 дек 2008, 18:08
Полное имя: П.В.Ю.

Re: Заочная олимпиада по программированию для школьников - 2011 год

Сообщение Vladislav_133 16 апр 2011, 18:57

Продолжение
Несколько пояснений к задаче.
1. Если программа откомпилирована и имеет, скажем, имя prog.exe, то ее запуск таков
prog <input.txt >output.txt
В output.txt окажется решение, т.е. количество автобусов и маршруток.
2. Я компилировал программу с помощью компилятора FreePascal. Не используйте, ради бога!, ТурбоПаскаль. Пора о нем забыть. Можно использовать, разумеется, Delphi.
3. Программа после компиляции будет одинаково работать и в Windows и в Любой из Unix-систем. Про другие ничего не скажу, так как не заню, какие там есть паскали.
Последний раз редактировалось Vladislav_133 16 апр 2011, 19:03, всего редактировалось 1 раз.
Аватара пользователя
Vladislav_133
Elite
 
Сообщения: 1386
Зарегистрирован: 13 дек 2008, 18:08
Полное имя: П.В.Ю.

Re: Заочная олимпиада по программированию для школьников - 2011 год

Сообщение Vladislav_133 16 апр 2011, 19:00

Продолжение
И еще. Если на данную ветку вдруг случайно забредут учителя информатики, хотелось бы услышать их мнение о преподавании программирования. Честно говоря, меня очень огорчила ситуация, когда в городе почти не осталось школьников, умеющих программировать.
Печально, очень печально. И это в то время, когда спрос на специалистов реально могущих создать какой-либо продукт, неуклонно растет.
Аватара пользователя
Vladislav_133
Elite
 
Сообщения: 1386
Зарегистрирован: 13 дек 2008, 18:08
Полное имя: П.В.Ю.

Re: Заочная олимпиада по программированию для школьников - 2011 год

Сообщение Vladislav_133 18 апр 2011, 20:36

Похоже никому не интересно программирование. Задачки, наверное, слишком просты.
Аватара пользователя
Vladislav_133
Elite
 
Сообщения: 1386
Зарегистрирован: 13 дек 2008, 18:08
Полное имя: П.В.Ю.

Re: Заочная олимпиада по программированию для школьников - 2011 год

Сообщение Vladislav_133 22 апр 2011, 19:43

Продолжим наши уроки.
задача 3. Найти все подчисла.

Код: Выделить всё
var
s:AnsiString;
s1:string;
i,j,a,n,k,t:integer;
s2:array[1..300] of string;
begin
{инициализация переменных}
    readln(s);
    i:=0; s1:='';n:=1;
{внешний цикл перебора символов строки}
    repeat
s1:='';
j:=0; a:=0;
if s[i]<>#0 then
{внутренний цикл нахождения всех чисел от данной позиции+4}
repeat.
    s1:=s1+s[i+j];
    if (ord(s[i+j])<=57) and (ord(s[i+j])>=48) then
    begin
a:=a+(ord(s[i+j])-48);{сумма цифр}
if(a mod 3) = 0 then {делится ли сумма на 3}
begin
    {проверим, нет ли в массиве уже такого числа}
    t:=0;
    for k:=1 to n-1 do
    begin
if s1=s2[k] then.
begin
    {число уже было}
    t:=1;
    break;
end;
    end;
   if t=0 then
    begin
{вывод числа на консоль}
writeln(s1);
{добавим в массив уже выведенных чисел}
s2[n]:=s1;
inc(n);
    end;
end;
end
    else
   begin
{среди цифр, попалась одна "не цифра"}
writeln('Error.');
exit;
    end;
    inc(j);
until (j=4) or (s[i+j]=#0);
inc(i);
  until s[i]=#0;
end.
Последний раз редактировалось Vladislav_133 30 апр 2011, 11:32, всего редактировалось 3 раз(а).
Аватара пользователя
Vladislav_133
Elite
 
Сообщения: 1386
Зарегистрирован: 13 дек 2008, 18:08
Полное имя: П.В.Ю.

Re: Заочная олимпиада по программированию для школьников - 2011 год

Сообщение Vladislav_133 22 апр 2011, 19:45

Не смотря ни на что я продолжаю публиковать решения к заочной олимпиаде для школьников. Может кто случайно набредет. В конце концов лишний раз по программировать, что еще надо. Хотя бы сам получу удовольствие.
Аватара пользователя
Vladislav_133
Elite
 
Сообщения: 1386
Зарегистрирован: 13 дек 2008, 18:08
Полное имя: П.В.Ю.


Вернуться в Конференции и семинары, олимпиады и форумы, выставки и конкурсы в ШГПУ

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11

cron