Литература Русский язык Английский язык Математика Информатика Физика Химия Биология География История

Олимпиада по информатике 7-10 классы

Примеры программ, выполняющих файловый ввод-вывод

Язык Паскаль

Var

c : Char;

s : String;

x : Integer;

Begin

Assign(input,'input.txt');

Reset(input);

Read(c); {ввод одного символа}

ReadLn(s); {ввод строки}

Read(x); {ввод числа}

Assign(output,'output.txt');

Rewrite(output);

Write(c); {вывод символа}

Write(s); {вывод строки}

Write(x); {вывод числа}

End.

Язык С/С++

#include

int main(void) {

char c,s[256]; int x;

freopen("input.txt","r",stdin);

scanf(”%c”,&c); //ввод одного символа

scanf(”%s”,s); //ввод строки

scanf("%d",&x); //ввод числа

freopen("output.txt","w",stdout);

printf("%c",c); //вывод символа

printf("%s",s); //вывод строки

printf("%d",x); //вывод числа

}

Язык Basic

OPEN "input.txt" FOR INPUT AS 1

OPEN "output.txt" FOR OUTPUT AS 2

REM ввод одного символа

c$ = INPUT$(1, #1)

REM ввод строки

INPUT #1, s$

REM ввод числа

INPUT #1, x

REM вывод символа

PRINT #2, c$

REM вывод строки

PRINT #2, s$

REM вывод числа

PRINT #2, x

END

Задача 1. «Школы»

Имя файла: schools.dpr | schools.pas | schools.c | schools.cpp | schools.bas

Входной файл: input.txt

Выходной файл: output.txt

Ограничение по времени: 1 секунда

Ограничение по памяти: 64M байт

Максимальная оценка: 20 баллов

 

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

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

Вход

В первой строке входном файле записано количество школ N (0 <= N <= 1000).  Во второй строке записаны N целых неотрицательных чисел – рейтинги школ. Любой рейтинг не превосходит 1000.

Выход

Запишите в выходной файл минимальное суммарное количество участников олимпиады от всех школ.

Примеры входа и выхода

input.txt

output.txt

2

0 0

2

3

0 1 0

4

Задача 2. «Насекомые»

Имя файла: insects.dpr | insects.pas | insects.c | insects.cpp | insects.bas

Входной файл: input.txt

Выходной файл: output.txt

Ограничение по времени: 1 секунда

Ограничение по памяти: 64M байт

Максимальная оценка: 20 баллов

У Васи большая коллекция насекомых. Он давно мечтает о специальных застеклённых ящиках, в которых он мог бы хранить свою коллекцию. И вот, наконец, Вася нашёл на барахолке именно такие ящики! Однако продавец заломил за них несусветную цену. Теперь Васе нужно очень быстро определить, какие из ящиков покупать, чтобы и коллекция в них уместилась, и денег потратить как можно меньше.

Вход

В первой строке входного файла записаны натуральные числа N – количество насекомых в коллекции и K - количество продаваемых ящиков (0 <= N <= 106, 0 <= M <= 25). Во второй строке записаны вместимости ящиков V1, V2, …, VN (1 <= Vi <= 106). В третьей строке в том же порядке записаны стоимости ящиков P1, P2, …, PN (1 <= Pi <= 106).

Выход

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

Замечание

В ящик нельзя помещать более Vi насекомых!

Примеры входа и выхода

input.txt

output.txt

100 3

10 20 60

1 2 3

-1

100 3

100 40 70

1000 500 450

950

Задача 3. «Сеть»

Имя файла: net.dpr | net.pas | net.c | net.cpp | net.bas

Входной файл: input.txt

Выходной файл: output.txt

Ограничение по времени: 1 секунда

Ограничение по памяти: 64M байт

Максимальная оценка: 20 баллов

Школа №666 выиграла грант, и на полученные средства заказала фирме «Пупкин-Инвест» создание общешкольной компьютерной сети. В школе всего N компьютеров, поэтому фирме заказали проложить N-1 соединительный кабель так, чтобы любой из компьютеров оказался связан по сети с любым другим.  К несчастью, как сам Пупкин, так и все сотрудники его фирмы учились ранее в школе №666. Поэтому, когда все соединительные кабели были уложены и подключены к компьютерам, выяснилось, что далеко не все компьютеры «видят» друг друга. Когда руководство школы взглянуло на отчёт, представленный фирмой, оно с ужасом обнаружило, что фирма соединила кабелями первые попавшиеся компьютеры, поэтому вместо единой школьной сети получилось много маленьких локальных сетей. Теперь нужно срочно определить, сколько ещё кабелей необходимо уложить, чтобы получилась общешкольная сеть.

Вход

В первой строке входного файла записано натуральное число N – количество компьютеров   (2 <= N <= 1000). В следующих N-1 строках записаны пары чисел u, v – номера компьютеров, которые сейчас соединены кабелями (1 <= u, v <= N). Никакая пара компьютеров не соединена более чем одним кабелем. Ни к какому компьютеру не подключено более 10 кабелей.

Выход

Запишите в выходной файл минимальное количество дополнительных кабелей.

Примеры входа и выхода

input.txt

output.txt

3

1 2

3 1

0

4

1 2

3 1

2 3

1

Задача 4. «Игра»

Имя файла: game.dpr | game.pas | game.c | game.cpp | game.bas

Входной файл: input.txt

Выходной файл: output.txt

Ограничение по времени: 1 секунда

Ограничение по памяти: 64M байт

Максимальная оценка: 20 баллов

Прямоугольная таблица состоит из N ? M одинаковых ячеек. Ячейки пронумерованы от 1 до N сверху вниз и от 1 до M слева направо. В каждой ячейке записано целое число aij . Игра состоит в том, чтобы, начиная с ячейки (1, 1), добраться до ячейки (N, M), перемещаясь на каждом шаге только на одну ячейку вправо или на одну ячейку вниз. При этом нужно выбрать такой путь, чтобы сумма чисел в пройденных ячейках была минимальна.

На рисунке показан пример оптимального пути.

Напишите программу, которая по заданной таблице находит минимальную сумму, которую можно набрать, играя на этой таблице.

Вход

В первой строке входного файла числа N и M (1 <= N, M <= 100).  В остальных N строках записано по M чисел aij (0 <= aij <= 106)

Выход

Запишите в выходной файл найденную минимальную сумму.

Примеры входа и выхода

input.txt

output.txt

2 2

3 7

6 2

11

3 4

0 3 4 7

6 1 9 8

5 2 3 5

14

Задача 5. «Морской бой»

Имя файла: battle.dpr | battle.pas | battle.c | battle.cpp | battle.bas

Входной файл: input.txt

Выходной файл: output.txt

Ограничение по времени: 1 секунда

Ограничение по памяти: 64M байт

Максимальная оценка: 20 баллов

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

Вход

В первой строке входного   файла   записаны   два   целых   числа   H и   W –   размеры   поля   (1 <= H, W <= 100). В следующих H строках, содержащих по W символов каждая, представлено игровое поле с уже размещёнными кораблями. Свободные клетки обозначены символами “.” (точка), а клетки, занятые кораблями – символами “#”. В последней строке файла записано целое число K – размер корабля, который хочет разместить Вася  (1 <= K <= 100).

Замечание

Вася и Петя играют в «продвинутый морской бой». В отличие от классического варианта в этой игре на игровом поле можно размещать любое количество кораблей любого размера, причём корабли могут касаться границ поля и друг друга.  Но корабль размером K, так же, как в классическом варианте, есть вертикальный или горизонтальный прямоугольник размером K ? 1.

Выход

Запишите в выходной файл количество различных вариантов размещения корабля.

Примеры входа и выхода

input.txt

output.txt

3 2

#.

.#

#.

2

0

3 4

.#..

..#.

..#.

2

8

7340

Комментарии  

 
0 Тема 3 апреля 2013, 11:08
Вообще в первом задания я так понял, что нужно знание языка С. У нас в школе преподают только паскаль, да и то в небольшом обьеме, да у друзей у моих в других школах тоже С не учат.
Ответить Ссылка
 
 
0 Rogue 22 марта 2013, 20:47
В первом примере, который реализует чтение из файла на Паскале есть ошибка, программа не будет работать потому что не объявлена переменная самого файла: переменная input
Ответить Ссылка
 
 
0 Pheonix 7 марта 2013, 22:58
Думаю, что задания для учеников не самые легкие. Сейчас в школе больше не информатике учат, а просто учат клацать на кнопки, по этому для меня языки программировани я это просто темный лес.
Ответить Ссылка
 
 
0 Portos 7 марта 2013, 0:40
Мне очень не нравится что на олимпиадах по информатике необходимо иметь очень сильное математическое образование, возможно даже больше чем надо для олимпиад по математике
Ответить Ссылка
 
 
0 Skyfire 27 марта 2013, 8:53
Да, в основном, что бы написать программу, нужно очень хорошо знать математику. А это очень плохо. Вообще, мне нравится ,когда на олимпиадах дают какие то интересные задания, а не стандартные задачи по математике.
Ответить Ссылка