Documente Academic
Documente Profesional
Documente Cultură
Cerinţa
Se dau două şiruri a şi b, cu n, respectiv m elemente, numere naturale, ordonate crescător.
Să se construiască un al treilea şir, c, care să conţină, în ordine crescătoare, elementele din
şirurile a şi b.
Date de intrare
Fişierul de intrare interclasare.in conţine pe prima linie numărul n; urmează n numere
naturale, ordonate crescător, ce pot fi dispuse pe mai multe linii. Linia următoare conţine
numărul m şi urmează m numere naturale, ordonate crescător, ce pot fi dispuse pe mai multe
linii.
Date de ieşire
Fişierul de ieşire interclasare.out va conţine elementele şirului construit, câte 10 valori
pe o linie, elementele de pe o linie fiind separate printr-un spaţiu. Ultima linie a fişierului
poate să conţină mai puţin de 10 valori.
Restricţii şi precizări
1 ≤ n, m ≤ 100.000
valorile elementelor celor două şiruri vor fi mai mici decât 1.000.000
Exemplu:
interclasare.in
7
1 3 4 6
7 8 8
8
2 4 5 6 8
9 9 12
interclasare.out
1 2 3 4 4 5 6 6 7 8
8 8 9 9 12
#include <fstream>
cin >> m;
for (i=1; i<=m; i++)
cin >> b[i];
int i=1,j=1;
while (i<=n && j<=m)
if (a[i]<b[j])
c[++k]=a[i],i++;
else
c[++k]=b[j],j++;
while (i<=n)
c[++k]=a[i],i++;
while (j<=m)
c[++k]=b[j],j++;
Date de intrare
Fişierul de intrare interclasare1.in conţine pe prima linie numărul n; urmează n numere
naturale, ordonate strict crescător, ce pot fi dispuse pe mai multe linii. Linia următoare
conţine numărul m şi urmează m numere naturale, ordonate strict crescător, ce pot fi dispuse
pe mai multe linii.
Date de ieşire
Fişierul de ieşire interclasare1.out va conţine, în ordine strict crescătoare, valorile
existente în cel puţin unul dintre cele două şiruri. Aceste valori vor fi afişate câte 10 pe o
linie, separate prin spaţii. Ultima linie poate conţine mai puţin de 10 de valori.
Restricţii şi precizări
1 ≤ n,m ≤ 100.000
valorile elementelor celor două şiruri vor fi mai mici decât 1.000.000
Exemplu:
interclasare1.in
7
1 3 4
7 20 24 60
9
3 5 7
8 9 10 12
20 24
interclasare1.out
1 3 4 5 7 8 9 10 12 20
24 60
#include <fstream>
cin >> m;
for (i=1; i<=m; i++)
cin >> b[i];
i = 1, j = 1;
while (i<=n && j<=m)
if (a[i]<b[j])
c[++k]=a[i],i++;
else
if (a[i]>b[j])
c[++k]=b[j],j++;
else
i++; //deci a[i]==b[j]deci doar sar peste nr de pe poz trecand la urm poz
while (i<=n)
c[++k]=a[i],i++;
while (j<=m)
c[++k]=b[j],j++;
#251 Interclasare2
Cerinţa
Se dau două şiruri a şi b, cu n, respectiv m elemente, numere naturale, ordonate strict
crescător. Să se afişeze, în ordine strict crescătoare, valorile existente în ambele şiruri.
Date de intrare
Fişierul de intrare interclasare2.in conţine pe prima linie numărul n; urmează n numere
naturale, ordonate strict crescător, ce pot fi dispuse pe mai multe linii. Linia următoare
conţine numărul m şi urmează m numere naturale, ordonate strict crescător, ce pot fi dispuse
pe mai multe linii.
Date de ieşire
Fişierul de ieşire interclasare2.out va conţine, în ordine strict crescătoare, valorile
existente în ambele şiruri. Aceste valori vor fi afişate câte 10 pe o linie, separate prin spaţii.
Ultima linie poate conţine mai puţin de 10 de valori.
Restricţii şi precizări
1 ≤ n,m ≤ 100.000
valorile elementelor celor două şiruri vor fi mai mici decât 1.000.000
Exemplu:
interclasare2.in
7
1 3 4
7 20 24 60
9
3 5 7
8 9 10 12
20 24
interclasare2.out
3 7 20 24
#include <fstream>
f >> m;
for (i=1;i<=m;i++)
f >> b[i];
i=1,j=1;
for (i=1;i<=k;i++)
{
g << c[i] << " ";
if (i%10==0)
g << endl;
}
return 0;
}
#284 Interclasare3
Cerinţa
Se dau două şiruri, cu n, respectiv m, elemente, numere naturale. Primul şir este ordonat
crescător, iar al doilea este ordonat descrescător. Să se afişeze, în ordine crescătoare, valorile
pare din cele două şiruri.
Date de intrare
Fişierul de intrare interclasare3.in conţine pe prima linie numerele n şi m;
urmează n numere naturale separate prin spaţii, dispuse pe mai multe linii, ordonate
crescător; urmează m numere naturale separate prin spaţii, dispuse pe mai multe linii,
ordonate descrescător.
Date de ieşire
Fişierul de ieşire interclasare3.out va conţine valorile pare din cele două şiruri, ordonate
crescător, câte 20 de valori pe o linie, valorile de pe aceeaşi linie fiind separate printr-un
spaţiu.
Restricţii şi precizări
1 ≤ n,m ≤ 100000;
elementele celor două şiruri vor avea cel mult 9 cifre;
în cel puţin şir va exista minim un element par;
Exemplu:
interclasare3.in
5 8
2 4 7 37 42
88 88 67 45 42 32 4 1
interclasare3.out
2 4 4 32 42 42 88 88
#include <fstream>
Date de intrare
Programul citește de la tastatură, în ordine:
Date de ieșire
Programul va afișa pe ecran elementele reuniunii celor două mulțimi, în ordine
crescătoare, separate prin exact un spațiu, iar pe rândul următor elementele intersecției celor
două mulțimi, în ordine crescătoare, separate de asemenea prin exact un spațiu.
Restricții și precizări
1 ≤ n , m ≤ 100.000
elementele celor două mulțimi vor fi mai mici decât 1.000.000.000
cele două mulțimi date au cel puțin un element comun
Exemplu:
Intrare
5
3 6 8 9 12
7
2 5 6 7 8 9 11
Ieșire
2 3 5 6 7 8 9 11 12
6 8 9
#include <iostream>
while (i<=n)
c[++k]=a[i],i++;
while (j<=m)
c[++k]=b[j],j++;
Date de intrare
Fișierul de intrare perechi6.in conține pe prima linie numărul
natural n, urmat de cele n elemente ale șirului x[], separate prin câte
un spațiu. Pe a două linie numărul natural m, urmat de cele m elemente
ale șirului y[], separate prin câte un spațiu.
Date de ieșire
Fișierul de ieșire perechi6.out va conține pe prima linie numărul p,
reprezentând numărul de perechi de elemente cerut.
Restricții și precizări
1 ≤ n, m ≤ 100.000
-1.000.000.000 ≤ x[i], y[j] ≤ 1.000.000.000
Exemplu:
perechi6.in
5 1 2 3 4 5
6 1 2 2 3 3 4
perechi6.out
6
Explicație
În fișierul de intrare sunt 6 perechi de numere care îndeplinesc
condițiile din enunț: (1,1), (2,2), (2,2), (3,3), (3,3), (4,4).
#include <fstream>
cin >> m;
for (j=1;j<=m;j++)
cin >> b[j];
i=1,j=1;
k=0;
while (i<=n && j<=m)
if (a[i]<b[j])
i++;
else
if (a[i]>b[j])
j++;
else
{
p=q=1;
while (i<n && a[i]==a[i+1])
p++,i++;
i++;
while (j<m && b[j]==b[j+1])
q++,j++;
j++;
k+=p*q;
}
cout << k;
return 0;
}
#242 InterclasM
Cerința
Se dă un număr natural x și două șiruri a și b, cu n, respectiv m elemente, numere
naturale, ordonate strict crescător. Să se afișeze, în ordine crescătoare, multiplii lui x care
se află doar în unul dintre cele două șiruri.
Date de intrare
Fișierul de intrare interclasm.in conține pe prima linie numărul x, pe linia a doua
numărul n; urmează n numere naturale, ordonate crescător, ce pot fi dispuse pe mai multe
linii. Linia următoare conține numărul m și urmează m numere naturale, ordonate crescător, ce
pot fi dispuse pe mai multe linii.
Date de ieșire
Fișierul de ieșire interclasm.out va conține pe prima linie valorile determinate, separate
printr-un spațiu.
Restricții și precizări
0 < x < 1.000.000
1 ≤ n, m ≤ 100.000
valorile elementelor celor două șiruri vor fi mai mici decât 1.000.000
Exemplu:
interclasm.in
5
7
1 2 3 4
7 20 60
9
3 5 7
8 9 10 12
20 24
interclasm.out
5 10 60
#include <fstream>
#2668 comun
Se consideră trei șiruri de numere naturale a = (a , a , ..., a ), b = (b , b , ...,
1 2 n 1 2
Cerința
Să se determine un număr care apare în cele trei șiruri. Dacă există mai multe astfel de
numere, să se determine cel mai mic. Dacă nu există un număr comun celor trei șiruri, afișați
valoarea -1.
Date de intrare
Programul citește de la tastatură numărul n reprezentând lungimea celor trei șiruri. Apoi se
citesc n numere naturale, separate prin spații, reprezentând elementele șirului a. Apoi se
citesc alte n numere naturale, separate prin spații, reprezentând elementele șirului b. La final
se citesc n numere naturale, separate prin spații, reprezentând elementele șirului c.
Date de ieșire
Programul va afișa pe ecran numărul x, reprezentând cel mai mic număr natural care apare în
toate cele trei șiruri, sau va afișa -1, dacă șirurile nu au niciun element comun.
Restricții și precizări
1 ≤ n ≤ 100.000
numere din cele trei șiruri vor fi mai mici decât 100.000.000
cele trei șiruri sunt ordonate crescător
Exemplu:
Intrare
5
3 6 6 8 10
8 8 8 10 10
1 1 8 10 30
Ieșire
Explicație
Numărul comun cel mai mic este 8. Mai există un număr comun celor trei șiruri, anume 10,
dar este mai mare.
#include <iostream>