                Problema 1
                 Avansare

Patronul unei firme din motive intemeiate face restructurari si concediaza
un angajat.
El vrea sa multumeasca cat mai multi angajati promovandu-i in functie.
Functiile sunt ierarhizate si promovarea se face in functia imediat ierarhica
sau in urmatoarea acesteia(pe un nivel sau doua superioare)
Se stie ca promovarea in functie inseamna si marirea salariului angajatului
promovat.
Cerinta:
Sa se precizeze care angajat va fi concediat astfel incat sa fie avansati
cat mai multi angajati iar suma majorarilor de salariu a celor avansati sa
nu depaseasca salariu celui concediat.

Date de intrare:
n numar de angajati (n<=100)
m numar de functii  (m<=100)
S vector cu salariile angajatilor
A matricea incadrarii
A[i,j]= 1 daca angajatul i este incadrat in functia j
    0 altfel
Functiile se considera ierarhizate crescator 1......m

Date de intrare se citesc din fisierul FUNCTII.TXT
n m prima linie
S[1] S[2].....S[n]
A[1,1] A[1,2]....A[1,m]
.
.
.
A[n,1] A[n,2].....A[n,m]
Datele pe fiecare linie sunt despartite printr-un unic spatiu.

Datele de iesire se obtin in fisierul AVANSATI.TXT
Pe prima linie numerele j S[j] reprezentand numarul angajatului concediat si
salariul sau.
Pe urmatoarea linie numarul de ordine al angajatilor avansati
i1 i2 ....ip j cu semnificatia i1 ia locul lui i2 ...ip ia locul lui j
Pe linia a treia numarul SS reprezentand suma diferentelor de salariu
ale angajatilor avansati.

Observatie:
1) Patronul va urmari sa aibe in primul rand cat mai multi avansati

2) In cazul in care exista mai multe solutii se va afisa una singura.

Exemplu:
FUNCTII.TXT
3 5
2 3 8
1 0 0 0 0
0 0 0 1 0
0 1 0 0 0
AVANSATI.TXT
2 8
1 3 2
6

Timp de executie per test 1 minut
---------------------------------------------------------------
                PROBLEMA 2


                  Repartizare


    La olimpiada judeteana de informatica participa n licee fiecare
cu un numar de a(i),i:=1..n elevi.Se doreste asezarea elevilor in banci
astfel incit sa nu existe doi elevi de la un liceu in banci consecutive,
iar elevii de la un acelasi liceu sa pastreze ordinea alfabetica.
Ajutati profesorii sa determine o asemenea asezare.
Liceele vor fi codificate de la 1 la n.

Observatie:
    n<=100 si m<=1000;
    Daca exista mai multe solutii se va determina una singura.

Datele se vor citi din fisierul input.txt cu urmatoarea structura:
-pe prima linie doua numere n m (despartite printr-un spatiu) reprezentand
numarul de licee si respectiv numarul total de elevi din concurs.
-pe fiecare din urmatoarele m linii ,departite de un spatiu:
  -numele elevului(fara prenume).
  -codul liceului.

Datele de iesire se vor scrie in fisierul output.txt sub forma urmatoare:
Pe m linii se vor scrie in ordine:
nume cod_liceu separate printr-un spatiu.
In cazul in care asezarea nu este posibila se va scrie in fisier
pe o singura linie mesajul
        Nu exista solutie

Exemplu:
Pentru fisierul de intrare input.txt

3 6
Albu 2
Cezar 2
Manu 3
Duca 1
Ion 2
Popescu 1

Fisierul de iesire output.txt va contine:
Albu 2
Duca 1
Cezar 2
Manu 3
Ion 2
Popescu 1
Timp de executie per test: 3 secunde
-------------------------------------------------------
Problema 3.
         Se considera un limbaj rezultat prin folosirea a 4 tipuri de sub-
expresii posibile.Cele 4 tipuri de subexpresii din limbaj se codifica cu li-
terele A,B,S,F,iar regulile de formare a lor sunt:
       1.S=>aSc
       2.S=>bAB
       3.S=>cFwBSSe
       4.S=>g
       5.B=>gB
       6.B=>h
       7.A=>dA
       8.A=>m
       9.A=>nFrBtS
       10.F=>pAB
       11.F=>qFsSiAA
       cu seminificatia:
       'S se poate scrie sub forma cF',adica c,urmat de o alta subexpresie
de tip F.
   Se stie ca o expresie corecta din limbaj incepe intotdeauna prin rezol-
varea tipului de subexpresie S,iar dezvoltarea se face prin transcrierea
primului tip de subexpresie ce apare in cuvantul rezultat,de la stanga la
dreapta.
        Exemplu:
         1    2      7       8       5        5         6
        S=>aSc=>abABc=>abdABc=>abdmBc=>abdmgBc=>abdmggBc=>abdmgghc
        Rezulta:cuvantul 'abdmgghc' face parte din limbaj.
             i.Sa se scrie un program encodor de mesaje,care primeste la
        intrare un mesaj sursa sub forma de secventa numerica si genereaza
        la iesire,daca secventa este corecta,cuvantul din limbaj rezultat
        prin aplicarea regulilor conform numerotarii din secventa.
             Exemplu:
             mesaj sursa:'1,2,7,8,5,5,6' => mesaj codat:'abdmgghc'
             ii.Sa se scrie un program decodor de mesaje din limbajul L,care
        are la intrare un mesaj codat,il verifica daca face parte din
        limbajul L si genereaza in acest ultim caz la iesire decodificarea
        mesajului care consta in sirul regulilor aplicate.
             Exemplu:
             mesaj codat:'abdmgghc' => mesaj decodat:'1,2,7,8,5,5,6'


