Rezolvare completă PbInfo #997 Reuniune

Cerința

Se dau două mulțimi de numere naturale. Să se afișeze reuniunea lor.

Date de intrare

Fişierul de intrare reuniune.in conţine pe prima linie numerele n m, reprezentând numărul de elemente din fiecare mulţime.

Linia a doua conţine n numere naturale diferite, ordonate crescător, reprezentând elementele primei mulțimi.

Linia a treia conţine m numere naturale diferite, ordonate crescător, reprezentând elementele celei de-a doua mulțimi.

Date de ieșire

Fişierul de ieşire reuniune.out va conţine pe prima linie elementele reuniunii celor două mulțimi, în ordine crescătoare, separate prin exact un spațiu.

Restricții și precizări

  • 1 ≤ n , m ≤ 1000
  • elementele celor două mulțimi vor fi mai mici decât 1 000 000 000

Exemplu

reuniune.in

6 4
1 3 4 7 10 43
3 5 10 37

reuniune.out

1 3 4 5 7 10 37 43

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 Reuniune:

#include <iostream>
#include <fstream>
using namespace std;

ifstream fin ("reuniune.in");
ofstream fout("reuniune.out");

int a[1005], b[1005], c[2005], n ,m , p;

int main(){
    fin  >> n >> m;
    for(int i = 1 ; i <= n ;  ++i)
        fin >> a[i];
    for(int i = 1 ; i <= m ;  ++i)
        fin >> b[i];
    //determinam reuniunea
    p = 0;
    for(int i  = 1 ; i <= n ; i ++)
        c[++p] = a[i];
    for(int i = 1 ; i <= m ; ++i)
    {
        bool ok = true;
        for(int j = 1 ; j <= n && ok ; j ++)
            if(b[i] == a[j])
                ok = false;
        if(ok)
        {
            p ++;
            int j;
            for(j = p ; j > 1 && c[j-1]>b[i] ; j --)
                c[j] = c[j-1];
            c[j] = b[i];
        }
    }
    for(int i = 1 ; i <= p ; i ++)
        fout << c[i] << " ";
    
        
    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 Adresa de email.

Rezolvarea problemei #997 Reuniune

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #997 Reuniune 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!