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
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema Interclasare:
#include <iomanip>
#include <fstream>
#include <iostream>
using namespace std;
ifstream fin("interclasare.in");
ofstream fout("interclasare.out");
int a[100005],n, b[100005], m, c[200005], k;
int main(){
fin >> n;
for(int i=1;i<=n;++i)
fin >> a[i];
fin >> m;
for(int i=1;i<=m;++i)
fin >> b[i];
int i=1,j=1;
k = 0;
while(i<=n && j<=m)
if(a[i]<b[j])
c[++k] = a[i] , i++;
else
c[++k] = b[j] , j++;
if(i<=n)
while(i<=n)
c[++k] = a[i] , i++;
else
while(j<=m)
c[++k] = b[j] , j++;
for(int i=1;i<=k;++i)
{
fout << c[i] << " ";
if(i%10==0)
fout << "
";
}
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #241 Interclasare
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #241 Interclasare de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!