Informatică, întrebare adresată de moldobogdan1234, 8 ani în urmă

Cineva cu problema asta sa ma ajute in c++?

Andrei şi Mihai doresc să aplice pentru acelaşi post în echipa WellCode. Deoarece echipa WellCode este compusă din programatori de elită, doar cei mai buni pot ajunge să faca parte din aceasta.

Pentru a-l recruta pe cel mai bun, Petru şi Bianca le-au cerut celor 2 candidați să scrie un program care, pentru un şir de n numere naturale sortat crescător și o valoare x dată, să determine poziţia minimă p pe care se găsește valoarea x în şir.

Va intra în echipa Wellcode cel al cărui program va executa sarcina cel mai rapid. Testează-ți și tu abilitățile și rezolvă problema aici, pe platformă

Date de intrare
Programul citește de la tastatură, de pe prima linie, numărul natural n. De pe următoarea linie se citește șirul de n numere naturale, sortate crescător. De pe a treia linie se citește un număr natural m, iar de pe a patra se citesc m numere naturale, reprezentând valori posibile pentru x.

Date de ieșire
Afișează, pentru fiecare dintre cele m numere citite, poziția minimă pe care se găsește în șirul inițial. Valorile vor fi afișate separate prin spații, iar numerotarea pozițiilor se va face începând cu valoarea 1.

Restricții și precizări
1 ≤ n ≤ 500 000
numerele din şir vor avea valori în intervalul [0, 500]
1 ≤ m ≤ 100 000
1 ≤ x ≤ 500
se garantează că valorile lui x citite există întotdeauna în şirul dat
Exemple
Date de intrare Date de ieșire
10
1 2 3 4 4 4 5 6 6 7
4
2 4 5 6 2 4 7 8


Apollyon: Ok, 10 pentru că citim 10 numere-n primul vector, dar care-i faza cu 4le ăla ? Căutăm index-ul doar a primelor 4 numere din al doilea vector sau ?

Răspunsuri la întrebare

Răspuns de GAGA135
4

Răspuns:

#include<iostream>

using namespace std;

int main() {

   

   const int NUM = 100001;

   const int MUM = 500002;

   int n, m, v[MUM], x[NUM], f[NUM], p[NUM];

   cin >> n;

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

       cin >> v[i];

       ++f[v[i]];

       if (f[v[i]] == 1)

           p[v[i]] = i;

   }

   cin >> m;

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

       cin >> x[i];

   }

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

       cout << p[x[i]] << " ";

   }

   

   return 0;

}


moldobogdan1234: Multumesc mult!
Alte întrebări interesante