Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int a[1000000], b[1000000], c[2000000], m, n, k=0; //изнасям "к" извън функцията, за да мога после
- // да го разпечатам в отговора - брой числа в новия масив.
- // ВАРИЯНТ А:
- void mergeA(){
- int i,j; // тук трия "к"
- for( i=0,j=0; i<m && j<n ;k++){ // а тук трия "к=0"
- if( a[i]<b[j] ) c[k]=a[i++];
- else if( a[i]==b[j] ) c[k]=a[i++], j++; // този ред добавям и това е всичко,
- // което променям в оригиналния merge, по зад.1А
- else c[k]=b[j++];
- }
- if( i == m )
- for( i=j; i<n; i++ ) c[k++]=b[i];
- else
- for( j=i; j<m; j++ ) c[k++]=a[j];
- }
- // ВАРИЯНТ Б:
- void mergeB(){
- int i,j; // тук трия "к"
- for( i=0,j=0; i<m && j<n; ){ // а тук трия "к=0", както се налага да изтрия и "к++"
- if( a[i]<b[j] ) i++; // лека промяна тук
- if( a[i]==b[j] ) c[k++]=a[i++], j++; // този ред добавям и това е всичко,
- // което променям в оригиналния merge, по зад.1А
- else j++; //и лека промяна тук
- }
- // надолу всичко трия (:
- }
- // ТЕСТ:
- int main(){
- setlocale(0,"");
- char ab;
- while( cout << "Моля, изберете вариант a/b:", cin >> ab ){ // въвежда се a или b, за да се тества единия от 2та вриянта,
- // с всичко друго се излиза от цикъла
- if( ab == 'a' || ab == 'b' ){
- cin >> m;
- cin >> n;
- for( int i=0; i<m; i++ ) cin >> a[i];
- for( int i=0; i<n; i++ ) cin >> b[i];
- if( ab == 'a' ) mergeA();
- else mergeB();
- cout << k << endl;
- for( int i=0; i<k; i++ ) cout << c[i]<< " ";
- cout << endl, k=0;
- } else break;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment