В этой секции предлагаются 8 задач на реализацию алгоритмов. Все задачи взяты из реальной жизни, хотя некоторые и имеют на первый взгляд сказочное условие. Для решения задач могут понадобиться не только знания и навыки, полученные в школе, но и дополнительная информация. В этом случае помогут многочисленные книги, Интернет. Не огорчайся, если сразу не сможешь решить задачу. Главное, упорство, терпение и логика мышления. Необходимо помнить, что важна не только победа но участие и приобретенный опыт, и если решить удалось не все задачи, присылай решения тех, которые получились.
Для написания программ можно воспользоваться следующими языками программирования: Pascal, C, C++, Java. Программа должна компилироваться без подключения дополнительных библиотек в одной из следующих сред:
- Turbo Pascal (DOS, Windows): Turbo Pascal v7.0
- С/С++ (DOS, Windows): gcc v 3.4.4 (codeblocks-1.0rc2_mingw.exe);
- C/C++ (Linux): gcc v 3.4.x;
- Java: sun jdk-5 (1.5).
Примечание:
Можно использовать только стандартные библиотеки. Описание стандартных библиотек для С\С++ можно найти на http://cppreference.com/.
Участникам необходимо прислать:
- исходный код программ-решений;
- пояснения к программам (описание алгоритмов) вместе с доказательством (аргументированными рассуждениями в произвольной форме) корректности применения использованных алгоритмов для решения конкретных задач;
- по 5 тестов для проверки работоспособности каждой программы.
Жюри будет проверять программы, используя тесты Оргкомитета, а также тесты, присланные участниками.
На выполнения каждого теста отводится не
более 5 секунд (частота CPU — 1500МГц), при этом будет учитываться скорость выполнения
программы.
В целях облегчения проверки просьба
расположить задачи этой секции, согласно следующей структуре директорий:
- /<FAMILIA>/ AUTHOR.TXT — личные данные участника,
- /<FAMILIA>/SA/<AN>/<LANG>/ PROG.<LANG> — исходный текст программы (он должен быть размещен в 1 файле!),
- /<FAMILIA>/SA/<AN>/DOCS/INFO.TXT — описание программы,
- /<FAMILIA>/SA/<AN>/<LANG>/TESTS/IN<I>.TXT.
Здесь <FAMILIA> — фамилия участника, записанная латинскими буквами. <SA> - секция A. <AN> - номер задачи (A3 — например), <LANG> — язык программирования (PAS, C, CPP, JAVA), <I> — номер теста (соответственно 0..4).
Программа должна использовать для ввода всех данных файл INPUT.TXT; для вывода — OUTPUT.TXTв директории работы программы. Копирование тестов в нее будет производиться автоматически системой проверки. Для ввода-вывода использовать следующий код:
•Pascal:
var fin:text;
fout:text;
begin
Assign(fin,”INPUT.TXT”);
Reset(fin);
Assign(fout,”OUTPUT.TXT”);
Rewrite(fout);
{ //ввод-вывод
Пример:
read(fin,num);
write(fout,num);
}
Close(fin); Close(fout);
end.
•C:
FILE * fin = fopen(“INPUT.TXT”,”r”);
FILE * fout = fopen(“OUTPUT.TXT”,”w”);
// ввод-вывод
Пример:
int iVariable; float fVariable;
fscanf(fin, “%d %f”, &iVariable, &fVariable);
fprintf(fout,”%2d %4.2f”, iVariable, fVariable);
fclose(fin); fclose(fout);
•C++:
#include <fstream >
std::ifstream is(“INPUT.TXT”);
std::ofstream os(“OUTPUT.TXT”);
//ввод-вывод
Пример:
int iVariable; float fVariable;
is>>iVariable>>fVariable; os<<iVariable<<fVariable<<std::endl;
is.close();
os.close();
•Java:
try{
BufferedReader reader = new BufferedReader(new FileReader("INPUT.TXT"));
BufferedWriter writer = new BufferedWriter(new FileWriter("OUTPUT.TXT"));
int a = Integer.parseInt(reader.readLine());
//ввод-вывод
Пример:
String s = reader.readLine();
writer.write(s + " " + a + "\n");
reader.close();
writer.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
Компиляция и запуск (Java) программ будет проводиться при помощи следующих команд:
•Pascal: bpc.exe prog.pas
•C: gcc -o2 -std=c99 -o prog.exe prog.c
•C++: gcc -lstdc++ -o2 -std=c++98 -o prog.exe prog.c
•Java: javac Prog.java
java Prog
Каждая задача оценивается в 30 баллов: аргументация алгоритма решения – 10; за тестирование: 10 – за тесты, присланные участниками (оценивается как результат выполнения программой данного теста, так и грамотность составления тестов) и 10 баллов за прохождения тестов Оргкомитета.