Informatică, întrebare adresată de lavinianiorba51, 9 ani în urmă

Buna ! Am rezolvat problema #250 de pe pbinfo si am obtinut 0 puncte.

Aici este rezolvarea mea:

https://pastebin.com/JePfqecJ

Cum as putea sa o fac corect si mai eficienta pt ca la ultima testare am primit "limita de timp depasita".

Cand am rezolvat problema nu am luat in considerare situatia in care elementele din siruri sa se repete pt ca spune ca sirurile sunt ordonate crescator .

Multumesc !

Răspunsuri la întrebare

Răspuns de boiustef
3

Răspuns:

#include <iostream>

#include <fstream>

#include <bitset>

using namespace std;

bitset<1000001>a;

int main()

{

   ifstream f("interclasare1.in");

   ofstream g("interclasare1.out");

   int n, m, i, num, k=0;

   f >> n ;

   for (i=1; i<=n; ++i)

   {

       f>> num; a[num]=1;

   }

   f >> m;

   for (i=1; i<=m; ++i)

   {

       f >> num; a[num]=1;

   }

  for (i=0; i<=1000000; ++i)

   {

       if (a[i]==1)

       {

           ++k; if (k%10) g<< i << " ";

                else g<< i << "\n";

       }

   }

   return 0;

}

Explicație:

#include <bits/stdc++.h>

using namespace std;

ifstream fin("interclasare1.in");

ofstream fout("interclasare1.out");

int n, m, a[100002], b[100002], c[200004];

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 = 1;

   while (i <= n && j <= m) {

       if (a[i] < b[j]) {

           c[k++] = a[i++];

       }

       else {

               if (a[i] > b[j]) {

                   c[k++] = b[j++];}

               else ++i;

       }

   }

   while(i <= n)

       c[k ++] = a[i ++];

   while(j <= m)

       c[k ++] = b[j ++];

   for (int i = 1; i < k; i++) {

       fout << c[i] << " ";

       if (i % 10 == 0)

           fout << endl;

   }

}


boiustef: ai doua variante...
prima... cu bitset ... cu un cod mai scurt
a doua ... clasica la interclasare
lavinianiorba51: wow ! Multumesc pt ajutor !
boiustef: cu placere, succese!
Alte întrebări interesante