www.agora.ro

Termen: 10 Decembrie 2000!

Runda 2

Vă prezentăm în continuare cele trei probleme de la cea de-a doua rundă a Concursului de Programare Agora. Concurenții care nu s-au înscris până la data de 5 Noiembrie 2000 pot participa la concurs începând cu această rundă dacă trimit mesajul de înscriere până pe data de 5 Decembrie 2000.

CPAR2P1: Acadele*

Nume fișier sursă: LOL.PAS, LOL.C sau

LOL.CPP

Nume fișier de intrare: LOL.IN

Nume fișier de ieșire: LOL.OUT

Descriere: O fabrică de dulciuri produce zilnic N acadele care trebuie ambalate în B cutii, fiecare cutie conținând L acadele. Ciclul de producție durează D zile și satisface următoarele criterii:

  • parametrii de producție N, B (B > 1) și L sunt aceiași pe toată durata unui ciclu de producție;
  • acadelele produse în aceeași zi au ambalaje diferite;
  • există exact N tipuri de ambalaje folosite pe toată durata unui ciclu de producție;
  • la sfârșitul unui ciclu de producție, pentru fiecare pereche de ambalaje distincte există o singură cutie care conține exact două acadele care au aceste ambalaje, celelalte acadele fiind ambalate diferit față de cele două.

De exemplu, dacă se produc zilnic 9 acadele, ciclul de producție este de 4 zile, atunci în fiecare zi se pot folosi 3 cutii care conțin câte 3 acadele. Cele 9 tipuri de ambalaje pot fi folosite astfel:

cutia 1 cutia 2 cutia 3

ziua 1: 123 468 579

ziua 2: 145 278 369

ziua 3: 167 249 358

ziua 4: 189 256 347

Scrieți un program care pentru un număr N dat determină valoarea L, astfel încât valoarea D - B să fie minimă. Dacă există mai multe soluții se va alege cea pentru care valoarea L este maximă.

Date de intrare: Fișierul de intrare conține un singur număr întreg N (2 Ł N Ł 2.000.000.000) reprezentând numărul de acadele produse zilnic.

Date de ieșire: Fișierul de ieșire va conține, pe o singură linie, valorile L, B și D separate printr-un singur spațiu. Dacă nu există soluție se va scrie 0 0 0.

Exemplu:

LOL.IN LOL.OUT

300000 120 2500 2521

Timp de execuție: 1 secundă/test

* Problema a fost preluată dintr-o culegere publicată la editura "Computer Libris Agora" din Cluj-Napoca. Din motive ușor de înțeles titlul culegerii va apărea doar după publicarea soluției.

CPAR2P2: Puncte

Nume fișier sursă: POINTS.PAS, POINTS.C sau

POINTS.CPP

Nume fișier de intrare: POINTS.IN

Nume fișier de ieșire: POINTS.OUT

Descriere: Dându-se n puncte în plan, să se determine o pereche de puncte aflate la distanță minimă unul față de celălalt.

Date de intrare: Fișierul de intrare conține pe prima linie un număr întreg n (1 Ł n Ł 10.000) reprezentând numărul de puncte din plan. Fiecare dintre următoarele n linii conține coordonatele reale x și y ale unui punct cu trei zecimale exacte.

Date de ieșire: Fișierul de ieșire trebuie să conțină pe două linii coordonatele x și y ale celor două puncte cu trei zecimale exacte.

Exemplu:

POINTS.IN POINTS.OUT

3 2.000 2.000

1.000 1.000 1.000 1.000

2.000 2.000

10.000 10.000

Timp de execuție: 1 secundă/test

CPAR2P3: Determinant

Nume fișier sursă: DET.PAS, DET.C sau

DET.CPP

Nume fișier de intrare: DET.IN

Nume fișier de ieșire:

DET.OUT

Descriere: Se dă o matrice pătratică de dimensiune n având elemente numere reale. Să se calculeze determinantul matricei date.

Date de intrare: Fișierul de intrare conține pe prima linie numărul n (1 Ł n Ł 200), iar pe fiecare dintre următoarele n linii câte n numere reale reprezentând o linie a matricei.

Date de ieșire: Fișierul de ieșire trebuie să conțină un număr întreg care să indice valoarea determinantului matricei cu o aproximație de două unități.

Exemplu:

DET.IN DET.OUT

2 -2

1.1 2.2 Sunt acceptate și soluțiile

3.3 4.4 -4, -3 și -1

Timp de execuție: 5 secunde/test

[cuprins]