Lista de probleme 22

Filtrare

#2004 ore

Se consideră două evenimente a căror durată este exprimată fiecare prin câte trei numere naturale: ore (h), minute (m) şi secunde (s). Să se scrie în fișierul de ieșire: a) pe primele două linii, duratele în formatul h: m: s; b) pe următoarele două linii, duratele exprimate în secunde, corespunzătoare fiecărui eveniment, pe rânduri separate; c) pe următoarea linie suma obţinută din adunarea duratelor celor două evenimente, exprimată în ore, minute, secunde, în formatul h: m: s.

Subiecte Atestat Informatica - Bucuresti

Se citește numărul n și apoi n articole cu structura prenume nume salariu vârstă funcție număr_de_telefon email. Fiecare articol este plasat pe câte o linie, câmpurile sale fiind separate prin câte un spațiu. Câmpurile salariu și vârstă conțin numere naturale, celelalte conțin șiruri de caractere.

Se citește apoi un număr natural p cuprins între 1 și 7 și un caracter c care poate fi + sau -.

Se cere ordonarea celor n articole în funcție de p și c, astfel:

  • dacă p=1, ordonarea se face după prenume; dacă p=2, ordonarea se face după nume; dacă p=3, ordonarea se face după salariu; dacă p=4, ordonarea se face după vârstă; dacă p=5, ordonarea se face după funcție; dacă p=6, ordonarea se face după număr_de_telefon; dacă p=7, ordonarea se face după email;
  • dacă c are valoarea +, ordonarea va fi crescătoare, iar dacă c are valoarea -, ordonarea va fi descrescătoare;
  • dacă două articole au aceeași valoare a câmpului în raport cu care se face sortarea, ordinea lor nu se va modifica.

#3146 Sort4

Să se sorteze șirul după criteriile specificate.

Scrieţi în limbajul C++ definiţia completă a subprogramului inmultire cu următorul antet:

void inmultire(matrice_rara a, matrice_rara b, matrice_rara &c)

ce calculează în c produsul matricelor rare a şi b.

Să se calculeze suma a două matrice rare .

Se dă un șir de n numere întregi a = (a[1], a[2], ..., a[n]). Trebuie să construiți un nou vector b de lungime n în care valorile sunt cuprinse între 1 și n astfel: toate elementele a[i] care memorează valoarea minimă se înlocuiesc în b[i] cu 1, toate elementele a[j] imediat mai mari decât minimele se înlocuiesc în b[j] cu 2, ș.a.m.d.

Anul acesta la serbarea de Crăciun, doamna învățătoare de la clasa întâi a hotărât să aranjeze elevii pe mai multe rânduri, după înălțime. Pe primul rând (cel din spatele scenei) va aranja în ordinea lexicografică a numelor, elevii care au înălțimea maximă, apoi în fața lor, tot în ordinea lexicografică a numelor elevii care au următoarea înălțime, ș.a.m.d. Fiind cam de aceeași vârstă, mulți dintre elevi au înălțimi egale.

Scrieţi un program care să citească numărul natural N (reprezentând numărul de elevi), apoi în ordine de pe linii diferite numele și înălțimea fiecărui elev și care să determine:

a) Numărul de rânduri pe care vor fi așezați elevii
b) Numărul de elevi de pe fiecare rând, urmat de elevii de pe rândul respectiv în ordinea lexicografică a numelor.

Olimpiada Municipala Informatica Iasi 2016

#2054 Joc7

Inspiraţi de clasicul joc Tic-Tac-Toe (X şi 0), Teodora şi Ştefan îşi propun să joace ceva asemănător, adăugând jocului clasic câteva reguli noi:

  • tabla de joc este un pătrat de latură N, care este împărţit în N*N celule, aşezate pe N linii şi N coloane; celulele pătratului sunt numerotate de la 1 la N2 parcurgând liniile de sus în jos, și coloanele de la stânga la dreapta;
  • Teodora va marca celulele cu X (litera X), iar Ştefan cu 0 (cifra 0);
  • în cadrul unei runde, copiii marchează alternativ câte o celulă din pătrat, nemarcată anterior;
  • o rundă a jocului este descrisă printr-un șir format din exact N2 numere naturale reprezentând celulele pătratului, în ordinea în care au fost marcate succesiv de cei doi copii;
  • jocul are K runde; prima este începută de Teodora, a doua de Ştefan, a treia Teodora, a patra Ştefan şi aşa mai departe;
  • o rundă este câştigată de jucătorul care reuşeşte primul să marcheze complet o linie, o coloană, diagonala principală sau una din cele două semidiagonale paralele şi alăturate cu aceasta, diagonala secundară sau una din cele două semidiagonale paralele şi alăturate acesteia;
  • o rundă se încheie fără un câştigător dacă după marcarea celor N2 celule nu există pe tabla de joc nicio linie, coloană, diagonală sau semidiagonală marcate cu acelaşi simbol.

Cunoscând numerele N, K şi cele K şiruri de numere care reprezintă rundele jucate, scrieţi un program care să rezolve una dintre următoarele două cerinţe:

  1. Să se determine câte runde a câştigat fiecare copil.
  2. Să se determine care este cel mai mare număr de marcări efectuate până la câştigarea unei runde.

Am o prietenă educatoare. Anul acesta are grupa mică și trebuie să organizeze serbarea de Crăciun. Ea s-a gândit să așeze copiii sub forma unui brad (cam așa ∆). Va împărți copiii în trei categorii: prima categorie va fi formată din primii X cei mai scunzi copii, a doua categorie este formată din copiii cu înălțimea maximă și restul Y de copii în a treia categorie. Copiii din prima categorie vor fi așezați în ordinea crescătoare a înălțimilor, iar cei din a treia categorie în ordinea descrescătoare a înălțimilor. Prietena mea vrea ca toți copiii cu aceeași înălțime să stea unul lângă altul, iar dacă numărul de copii din prima categorie nu poate fi egal cu cel din a treia, vrea ca prima categorie să fie mai numeroasă (X ≥ Y). Prietena mea știe N, numărul de elevi din grupă, prenumele copiilor și înălțimea lor în centimetri. Ea încearcă de câteva zile să îi așeze. Oare cum ar rezolva un elev olimpic la informatică această problemă? Scrieţi un program care să determine:
1. Numărul maxim de copii cu aceeași înălțime.
2. O posibilă distribuire a înălțimilor sub forma unui brad.
3. Lista cu prenumele copiilor conform distribuirii înălțimilor determinată anterior.

Olimpiada Municipala de Informatica, Iasi, 2020

Într-o țară îndepărtată, economia este în criză. Cea mai mare problemă este lipsa de capital care creează blocaje financiare. De exemplu, o firmă X poate avea datorii către o firmă Y pe care nu le poate plăti, deoarece o altă firmă Z are datorii către firma X pe care nu le-a plătit, ş.a.m.d.

Există o listă cu toate datoriile firmelor sub forma următoare:

X > Y S

cu semnificaţia “firma X datorează firmei Y suma S”. Este posibil ca X să aibă mai multe datorii la firma Y (în funcţie de contractele derulate împreună) sau chiar ca X să aibă datorii la Y și Y să aibă datorii la X.

Cunoscând lista cu datoriile firmelor, scrieți un program care să rezolve următoarele cerințe:

  1. determină numărul de firme distincte care apar în această listă;
  2. realizează o situație financiară a firmelor distincte din această listă, scrise în ordine lexicografică; pentru fiecare firmă se vor determina două valori SD SP, unde SD reprezintă suma totală a datoriilor pe care firma le are către alte firme, iar SP este totalul sumelor pe care firma trebuie să le primească de la alte firme.