0251 - Interclasare 2: Difference between revisions

From Bitnami MediaWiki
Raul (talk | contribs)
Pagină nouă: = Cerinţa = Se dau două şiruri <code>a</code> şi <code>b</code>, cu <code>n</code>, respectiv <code>m</code> elemente, numere naturale, '''ordonate strict crescător'''. Să se afişeze, în ordine strict crescătoare, valorile existente în ambele şiruri. = Date de intrare = Fişierul de intrare <code>interclasare2.in</code> conţine pe prima linie numărul <code>n</code>; urmează <code>n</code> numere naturale, ordonate strict crescător, ce pot fi dispuse pe mai mu...
 
Raul (talk | contribs)
No edit summary
 
Line 29: Line 29:


=== Lipește codul aici ===
=== Lipește codul aici ===
1
<syntaxhighlight lang="python" line="1">
​const fs = require('fs');
​const fs = require('fs');


const readline = require('readline');
const readline = require('readline');


const rl = readline.createInterface({
const rl = readline.createInterface({


  input: fs.createReadStream('interclasare2.in'),
  input: fs.createReadStream('interclasare2.in'),


  output: fs.createWriteStream('interclasare2.out')
  output: fs.createWriteStream('interclasare2.out')


});
});


let a = new Array(100001);
let a = new Array(100001);


let b = new Array(100001);
let b = new Array(100001);


let c = new Array(200001);
let c = new Array(200001);


let n, m, k, i, j;
let n, m, k, i, j;


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


  const values = line.split(' ');
  const values = line.split(' ');


  if (n === undefined) {
  if (n === undefined) {


    n = parseInt(values[0]);
    n = parseInt(values[0]);


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


      a[i] = parseInt(values[i]);
      a[i] = parseInt(values[i]);


    }
    }


  } else if (m === undefined) {
  } else if (m === undefined) {


    m = parseInt(values[0]);
    m = parseInt(values[0]);


    for (let j = 1; j <= m; j++) {
    for (let j = 1; j <= m; j++) {


      b[j] = parseInt(values[j]);
      b[j] = parseInt(values[j]);


    }
    }


    i = 1;
    i = 1;


    j = 1;
    j = 1;


    k = 0;
    k = 0;


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


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


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


        j++;
        j++;


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


        i++;
        i++;


      } else {
      } else {


        j++;
        j++;


      }
      }


    }
    }


    for (let t = 1; t <= k; t++) {
    for (let t = 1; t <= k; t++) {


      rl.output.write(c[t] + ' ');
      rl.output.write(c[t] + ' ');


      if (t % 10 === 0) {
      if (t % 10 === 0) {


        rl.output.write('\n');
        rl.output.write('\n');


      }
      }


    }
    }


    rl.output.write('\n');
    rl.output.write('\n');


    rl.close();
    rl.close();


  }
  }


});
});
 
</syntaxhighlight>

Latest revision as of 14:16, 14 December 2023

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>