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

doar in c++
Ai terminat problema anterioară destul de repede, bravo! Am modificat puțin cerința, poți să rezolvi problema aceasta și mai repede decât pe prima?

De data aceasta, ți se dă un șir de n numere naturale ordonat crescător și un alt șir cu m numere naturale. Trebuie să afli, pentru fiecare din cele m numere, care e cea mai din dreapta poziție pe care se găsește în primul șir.

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 3 a linie se citește un număr natural m, iar de pe a 4 a se citesc m numere naturale, conform cerinței.

Date de ieșire
Afișează, pentru fiecare dintre cele m numere citite, poziția cea mai din dreapta 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 ≤ 1 000 000
numerele din şir vor avea valori în intervalul [1, 500]
1 ≤ m ≤ 1 000
1 ≤ x ≤ 500
se garantează că toate cele m valori citite există în primul şir
Exemple
Date de intrare Date de ieșire
10
1 2 3 4 4 4 5 6 6 7
4
2 6 5 4 2 9 7 6

Răspunsuri la întrebare

Răspuns de c10crys
0

Răspuns:

#include <iostream>

using namespace std;

int n, m, n_elements[10001], searching_m[101];

int main() {

   cin >> n;

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

       cin >> n_elements[i];

   }

   cin >> m;

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

       cin >> searching_m[i];

   }

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

       for (int j = n; j >= 1; j--) {

        if (searching_m[i] == n_elements[j]) {

           cout << j << " ";

           break;

           }

       }

   }

   return 0;

}

Explicație:


c10crys: a rezolvat cineva aceasta problema de 100 puncte?
eduardd231: inca nu, @c10crys daca poti sa ne arati o varianta mai scurta ca da limita de timp depasita la o solutie
Alte întrebări interesante