0251 - Interclasare 2

From Bitnami MediaWiki
Revision as of 14:16, 14 December 2023 by Raul (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerinţa[edit | edit source]

Se dau două şiruri a şi b, cu n, respectiv m elemente, numere naturale, ordonate strict crescător. Să se afişeze, în ordine strict crescătoare, valorile existente în ambele şiruri.

Date de intrare[edit | edit source]

Fişierul de intrare interclasare2.in conţine pe prima linie numărul n; urmează n numere naturale, ordonate strict crescător, ce pot fi dispuse pe mai multe linii. Linia următoare conţine numărul m şi urmează m numere naturale, ordonate strict crescător, ce pot fi dispuse pe mai multe linii.

Date de ieşire[edit | edit source]

Fişierul de ieşire interclasare2.out va conţine, în ordine strict crescătoare, valorile existente în ambele şiruri. Aceste valori vor fi afişate câte 10 pe o linie, separate prin spaţii. Ultima linie poate conţine mai puţin de 10 de valori.

Restricţii şi precizări[edit | edit source]

  • 1 ≤ n,m ≤ 100.000
  • valorile elementelor celor două şiruri vor fi mai mici decât 1.000.000

Exemplu:[edit | edit source]

interclasare2.in

7
1 3 4
7 20 24 60
9
3 5 7
8 9 10 12
20 24

interclasare2.out

3 7 20 24 

Încărcare soluție[edit | edit source]

Lipește codul aici[edit | edit source]

<syntaxhighlight lang="python" line="1"> ​const fs = require('fs');

const readline = require('readline');

const rl = readline.createInterface({

 input: fs.createReadStream('interclasare2.in'),
 output: fs.createWriteStream('interclasare2.out')

});

let a = new Array(100001);

let b = new Array(100001);

let c = new Array(200001);

let n, m, k, i, j;

rl.on('line', (line) => {

 const values = line.split(' ');
 if (n === undefined) {
   n = parseInt(values[0]);
   for (let i = 1; i <= n; i++) {
     a[i] = parseInt(values[i]);
   }
 } else if (m === undefined) {
   m = parseInt(values[0]);
   for (let j = 1; j <= m; j++) {
     b[j] = parseInt(values[j]);
   }
   i = 1;
   j = 1;
   k = 0;
   while (i <= n && j <= m) {
     if (a[i] === b[j]) {
       c[++k] = a[i++];
       j++;
     } else if (a[i] < b[j]) {
       i++;
     } else {
       j++;
     }
   }
   for (let t = 1; t <= k; t++) {
     rl.output.write(c[t] + ' ');
     if (t % 10 === 0) {
       rl.output.write('\n');
     }
   }
   rl.output.write('\n');
   rl.close();
 }

});

</syntaxhighlight>