Răspuns :
Răspuns:
#include <iostream>
using namespace std;
int v[100001]; // nu precizeaza cat de mare este vectorul, deci am ales eu o valoare
int main()
{
unsigned int n;
cin >> n;
int x, k;
for (int i = 1; i <= n; ++i)
cin >> v[i];
cin >> x >> k;
int st, dr; // cea mai din stanga, respectiv dreapta pozitie a lui x
st = dr = 0; // initializam 0, "Dacă x nu apare în vector, atunci p și q vor fi egale cu 0"
for (int i = 1; i <= n / 2; ++i)
{
if (v[i] == x)
{
st = i;
break;
}
}
for (int i = n; i >= n / 2; --i)
{
if (v[i] == x)
{
dr = i;
break;
}
}
int cnt = 0, poz = 0; // contor pentru a afla la a cata aparietie a lui x suntem, respectiv a k - a pozitie a lui x
for (int i = 1; i <= n; ++i)
{
if (v[i] == x)
cnt++; // am gasit o aparitie
if (cnt == k)
{
poz = i; // pozitia devine pozitia curenta
break; // am gasit ce trebuia, ne oprim
}
}
cout << st << '\n' << dr << '\n' << poz;
return 0;
}
Explicație:
Ai explicatia in cod, probabil nu este cel mai eficient, dar este cel mai usor de inteles dupa parerea mea. Succes !!!