Sunteți pe pagina 1din 2

/*

Cerința
Se dau două șiruri de numere naturale, cu n, respectiv m elemente, ordonate
crescător. Să se scrie definiția funcției interclasare
care nu are parametri și nu întoarce niciun rezultat, și care să determine al
treilea șir care să conţină, în ordine crescătoare
elementele din primele două şiruri.
Date de intrare
Fișierul de intrare file1.txt conține pe prima linie numărul natural n, apoi
numerele primului șir, iar fișierul file2.txt
conține pe prima linie numărul natural m, apoi numerele celui de-al doilea șir,
acestea fiind separate prin spații.
Date de ieșire
Fișierul de ieșire file.out va conține numerele celui de-al treilea șir, separate
prin spații.
Restricții și precizări
1 ≤ n, m ≤ 100.000
numerele de pe a doua linie a fișierului de intrare vor fi mai mici decât
1.000.000.000
declarările variabilelor pentru citirea sau scrierea fișierelor trebuie realizată
exclusiv în interiorul funcției cerute
Exemplu
file1.txt
7
1 3 4 6 7 8 8
file2.txt
8
2 4 5 6 8 9 9 12
file.out
1 2 3 4 4 5 6 6 7 8 8 8 9 9 12
*/
#include<fstream>
#include <iostream>
#include<cstring>
using namespace std;
void interclasare()
{
ifstream in("file1.txt");
ifstream inn("file2.txt");
ofstream out("file.out");
int n,m,x[100001],y[100001],i,j,k=1;
in>>n;
for(i=1;i<=n;i++)in>>x[i];
inn>>m;
for(i=1;i<=m;i++)inn>>y[i];
int z[100000001];
i=0;
j=0;
while(i!=n&&j!=m)
{
if(x[i]>y[j])z[k]=y[j],j++,k++;
else z[k]=x[i],i++,k++;
}
if(i!=n)
{
while(i<=n)
z[k]=x[i],i++,k++;
}
else if(j!=m)
{
while(j<=m)
z[k]=y[j],j++,k++;
}
for(i=1;i<=k;i++)out<<z[i]<<" ";
}
int main()
{

S-ar putea să vă placă și