`Всеукраїнський центр проведення олімпіад в мережі Інтернет

VII Всеукраїнська олімпіада з інформатики

Перший тур


25 березня 1994 року

 

ВЗАЄМНИЙ ЗАЛIК БОРГIВ
(20 балiв).

    З-за економiчної кризи багато пiдприємств не можуть отримати борги вiд покупцiв i розрахуватися з продавцями за свої борги. Банк має намiр зменшити загальний борг своїх клiєнтiв, виконавши взаємний залiк боргiв. Для цього банк може змiнювати борги клiєнтiв будь-яким чином при умовi, що для кожного клiєнта лишиться незмiнним сальдо - рiзниця мiж сумою боргiв йому та сумою його боргiв.
    ЗАВДАННЯ: написати програму, що перерахує заданий список боргiв в такий, що має якомога меншу загальну суму боргiв.

Технiчнi умови

  1. Ваша програма повинна прочитати вхiднi данi для декiлькох тестiв з одного текстового ASCII-файлу DEBTS.DAT. Данi для рiзних тестiв вiдокремлено порожнiм рядком. Кожен рядок файлу вiдповiдає од- ному борговому зобов'язанню та мiстить 3 натуральних числа: номер боржника, номер пiдприємства, якому вiн винен, та суму боргу. Сусiднi числа вiдокремлено пропуском.
  2. Ваша програма повинна записати результати для всiх тестiв до одного тестового ASCII-файлу DEBTS.SOL, вiдокремлюючи результати рiзних тестiв порожнiм рядком. Результат кожного тесту має мiстити список боргiв, що залишаться пiсля взаємних залiкiв. Цей список пови- нен мати таку ж структуру, що й вхiдний. За ним треба вивести список сальдо всiх клiєнтiв, що були боржниками або мали боржникiв. Кожен рядок цього списку мiстить номер пiдприємства та його сальдо, вiдок- ремленi пропуском. В кiнцi результатiв тесту треба в окремому рядку вивести загальну суму боргiв.
  3. Кiлькiсть пiдприємств не перевищує 100, грошовi суми не пере- вищують 30000 одиниць.
  4. Iм'я файлу з вихiдним текстом програми - DEBTS*.



  5.  
  6.  

Приклад вхiдного та вихiдного файлiв

Вхiднi данi (файл DEBTS.DAT):
     1  2  100
     2  3  50
     3  1  75

     1  2  15
     2  3  11
     4  1  14

 Вихiднi данi (файл DEBTS.SOL) повиннi виглядати так:
     1  2  25
     3  2  25
     1  -25
     2  50
     3  -25
     50

     1  2  1
     4  2  4
     4  3  11
     1  -1
     2  4
     3  11
     4  -14
     15

 

ПОРIВНЯННЯ КОМПОСТЕРIВ
(20 балiв)

    Компостер в автобусi робить у квитку отвори, що мiстяться у дея- ких вузлах квадратної сiтки розмiром M*N вузлiв. Компостери вважа- ються однаковими, якщо всi зробленi ними отвори в квитках можна сумiстити, вiдобразивши один квиток на iнший комбiнацiєю паралельних переносiв, поворотiв на прямий кут та симетрiй вiдносно горизонталь- ної та вертикальної осей. Закомпостований квиток має принаймнi один отвiр.
    ЗАВДАННЯ: Написати програму, що визначить, чи однаковi два зада- них компостери.

Технiчнi умови

  1. Ваша програма повинна прочитати вхiднi данi для декiлькох тестiв з одного текстового ASCII-файлу COMPOST2.DAT. Данi для рiзних компостерiв вiдокремлено порожнiм рядком. Кожен рядок файлу вiдповiдає одному рядковi компостера та мiстить одиницi (отвори) та нулi (вузли без отворiв). Сусiднi числа вiдокремлено пропуском.
  2. Ваша програма повинна записати результати для всiх тестiв до одного текстового ASCII-файлу COMPOST2.SOL. Результат кожного тесту - рядок з його порядковим номером та словом "Однаковi" або "Рiзнi".
  3. Розмiри сiтки не перевищують 15 вузлiв.
  4. Iм'я файлу з вихiдним текстом програм - COMPOST2.*

Приклад вхiдного та вихiдного файлiв

Вхiднi данi (файл DEBTS.DAT):
     Вхiднi данi (файл COMPST2.DAT):
     0  0  0 {перший тест, перший компостер}
     0  0  1
     0  0  0

     0  1  0  0 {перший тест, другий компостер}
     0  0  0  0 {хоч вiн i має iнший розмiр, нiж перший}
     0  0  0  0 {але вважається однаковим з ним}

     1  0  0  0  0  0 {другий тест, перший компостер}
     0  0  0  0  0  0
     0  0  0  0  0  0
     0  0  0  0  1  0

     1  0  0  0  0  1 {другий тест, другий компостер}
     0  0  0  0  0  0
     0  0  0  0  0  0
     0  0  0  0  0  0
     Вихiднi данi (файл COMPST2.SOL) повинен виглядати так:
     1. Однаковi
     2. Рiзнi
 

 

КIЛЬКIСТЬ КОМПОСТЕРIВ
(60 балiв)

    ЗАВДАННЯ: Написати програму, що за умов попередньої задачi виз- начить кiлькiсть рiзних компостерiв, якi можна утворити на сiтцi розмiром M*N вузлiв.
 

Технiчнi умови

  1. Ваша програма повинна прчитати вхiднi данi для декiлькох тестiв з одного текстового ASCII-файлу COMPOST3.DAT. Кожен рядок фай- лу вiдповiдає одному тесту та мiстить числа M та N, вiдокремленi про- пуском.
  2. Ваша програма повинна записати результати для всiх тестiв до одного текстового ASCII-файлу COMPOST3.SOL. Результат кожного тесту - рядок з його порядковим номером та кiлькiстю компостерiв.
  3. M та N не перевищують 15.
  4. Iм'я файлу з вихiдним текстом програми - COMPOST3.*

Приклад вхiдного та вихiдного файлiв

Вхiднi данi (файл COMPOST3.DAT):
     1  1
     2  2
 Вихiднi данi (файл COMPOST3.SOL) повиннi виглядати так:
     1  1
     2  5

 

Другий тур


26 березня 1994 року

 

АРХIВАТОР

  1. Напишiть програму-архiватор, що перетворює вхiдний текстовий файл у вихiдний (архiвний) файл якомога меншого розмiру, та програ- му-дезархiватор, що вiдновлює за архiвним файлом початковий (50 балiв).
  2. Напишiть програму-архiватор, що перетворює всi текстовi файли з iменами, вiдповiдними масцi "*.txt", що знаходяться в поточному ка- талозi, в один вихiдний (архiвний) файл якомога меншого розмiру, та програму-дезархiватор, що вiдновлює за архiвним файлом всi включенi до нього текстовi файли (30 балiв).
  3. З рiзних причин iнформацiя в архiвних файлах може спотворюва- тися. Додайте до дезархiватора засоби, що сповiщають користувача в разi спотворення iнформацiї в архiвному файлi (20 балiв).

Технiчнi умови

  1. Вхiднi текстовi файли можуть мiстити великi та малi українсь- ки, росiйськi та латинськi лiтери, цифри, крапки, коми, крапки з ко- мами, двокрапки, знаки питання та оклику, тире, подвiйнi лапки, круглi дужки, пропуски, символи повернення каретки (десятковий код - 10) та переведення рядка (код 13). Кожен файл завершується символом кiнця файлу (код 26). Довжина рядкiв не перевищує 255 символiв. Вико- ристовуйте кодування українських лiтер згiдно з наданим Вам драйвером.
  2. Архiвний файл повинен завершуватися символом кiнця файлу; в серединi архiвного файлу цей символ мiститися не може.
  3. Програми повиннi запитувати необхiднi iмена текстових та архiвних файлiв в дiалозi.
  4. Вiдкомпiльованi програми мають обробляти кожен набiр текстiв не довше, нiж за 5 хвилин; програми, що iнтерпретуються - не довше, нiж за 10 хвилин.
  5. Iмена файлiв з вихiдними текстами програм - ARC.* та UNARC.*

Повний архів олімпіади (64 Kb)


© Всеукраїнський віртуальний центр олімпіад школів "ОЛІМП"

© LIKT 1998-2024