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

Ma poate ajuta cineva cu problema asta? 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


IoanaTulpan: ce numar are aceasta problema?

Răspunsuri la întrebare

Răspuns de Levi20
3

#include<iostream>

using namespace std;

int v[]={};

int main()

{

int n,m,x,y,nr=1;

cin>>n;

cin>>y;

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

{

cin>>x;

if(x!=y)

v[y]=nr;

y=x;

nr++;

}

v[y]=nr;

cin>>m;

for(int i=0;i<m;i++)

{

cin>>x;

cout<<v[x]<<" ";

}

return 0;

}

Sa crești mare!

Alte întrebări interesante