"Oamenii se impart in doua categorii: unii cauta si nu gasesc, altii
gasesc si nu-s multumiti."
M. Eminescu  (poet 1850-1889)


Rezolvarile problemelor propuse la etapa I trebuie trimise pana in data de
22 Noiembrie 1997 pe adresa concurs@lego.soroscj.ro. Linia Subject: a unui
mesaj cu rezolvarea unei probleme terbuie sa contina textul E1Px, unde x
este numarul problemei.


Problema 1:

Numere (20 puncte)

        Un numar pozitiv este reprezentat ca un sir de caractere; aceste
caractere pot fi 0,1,2,3,4,5,6,7,8,9; conditia este ca primul caracter sa fie
diferit de 0.
Fiind dat un astfel de numar L (de maxim 500 cifre), se cere sa se afle cate
numere mai mari decat L se pot construi folosind toate cifrele lui L.
Intrare:
        Fisierul de intrare (INPUT.TXT) contine cifrele lui L, cate 10 pe
fiecare linie (inafara de ultima linie). Exista cel putin o linie si cel mult
50 linii cu cifre.
Iesire:
        Programul trebuie sa scrie un fisierul OUTPUT.TXT un numar care
reprezinta cate numere mai mari decat numarul dat se pot construi cu cifrele
sale.
Exemplu:
Pentru fisierul de intrare
1 1 1 1 1 1 1 1 1 1
1 2
iesirea este
11

Timp de executie: 5 sec/test

Prof. Adrian ATANASIU
Universitatea Bucuresti 

Problema 2:

Prima cifra (35 puncte)
        Se da un numar intreg n, n>=0. Sa se determine prima cifra a
numarului n!=1*2*..*n
Exemplu:
        Pentru
n=4
        raspunsul este
4! incepe cu cifra 2.

Intrare: tastatura
Iesire: ecran

Timp: 1 sec/test pentru n<1000, 3 sec/test pentru n>=1000

Prof. Adrian ATANASIU
Universitatea Bucuresti 



Problema 3 :

Masina paralela (20 puncte)

    O masina paralela este un calculator care contine mai multe procesoare.
Fiecare procesor poate executa un job independent de celelalte procesoare.
Sa presupunem ca exista n joburi J1,J2,..,Jn care trebuiesc prelucrate de o
masina paralela cu P procesoare. Un job poate fi procesat de oricare procesor.
Cele P procesoare au aceeasi viteza de executie. Evident, daca toate 
procesoarele sunt ocupate unele joburi trebuie sa astepte pana cand un 
procesor se elibereaza. Trebuie sa definiti un algoritm pentru minimizarea 
timpului mediu de asteptare. Timpul de asteptare al unui job este egal cu timpul
cand jobul asteapta un procesor liber pana in momentul incepererii executiei 
lui. Timpul mediu de asteptare este suma timpilor medii de asteptare pentru 
toate joburile, imaprtit la numarul de joburi.
Se presupune ca toate joburile sosesc simultan, iar decizia de programare a unui
job este 0 unitati de timp.
Intrare:
        Fisierul INPUT.TXT este definit astfel: prima linie contine doua numere
intregi pozitive reprezentand numarul P (1<=P<=500) de procesori si numarul J
(1<=J<=1000) de joburi. Incepand cu urmatoarea linie sunt listate J numere
intregi pozitive, cate 25 pe o linie, separate prin cate un spatiu; ele
reprezinta timpii de executie al joburilor.
Iesire:
        Programul va scrie in fisierul OUTPUT.TXT un numar real (cu 3 zecimale
exacte) reprezentand cel mai mic timp mediu de asteptare al joburilor.
Exemplu:
INPUT.TXT
2 6
4 1 1 2 2 3
OUTPUT.TXT
1.333
Timp de executie: 1 sec/test

Prof. Adrian ATANASIU
Universitatea Bucuresti 


