Pagini recente » Diferente pentru utilizator/theshadows intre reviziile 1 si 2 | Diferente pentru problema/secv6 intre reviziile 28 si 4 | Diferente pentru problema/hanoi2 intre reviziile 7 si 8 | Diferente pentru problema/cod2 intre reviziile 4 si 5 | Diferente pentru problema/cbinput intre reviziile 1 si 2
Nu exista diferente intre titluri.
Diferente intre continut:
== include(page="template/taskheader" task_id="cbinput") ==
Poveste şi cerinţă...
Georgel are de rezolvat urmatoarea problema: Se da un sir de $N$ numere in ordine crescatoare cu valori intre $1$ si $K$. Fiecare valoare de la $1$ la $K$ apare cel putin o data in sir. Sa se gaseasca ultima aparitie in sir a fiecarei valori de la $1$ la $K$.
Georgel, incepator intr-ale informaticii, a gasit aceasta rezolvare:
==code(cpp) |
...
int cautareBinara(int val) {
int st = 1;
int dr = N;
while(st <= dr) {
int mid = (st + dr) / 2;
if(v[mid] == val) {
while(mid <= N && v[mid] == val) {
mid++; // <==
}
return mid - 1;
} else if(v[mid] < val) {
st = mid + 1;
} else {
dr = mid - 1;
}
}
return -1;
}
...
for (int i = 1; i <= K; i++) {
cout << cautareBinara(i) << endl;
}
...
==
Fiind date $N$ si $K$, sa se gaseasca un sir valid de intrare astfel incat linia 9 (mid++) sa se execute de un numar maxim de ori.
h2. Date de intrare
Nu exista diferente intre securitate.
Topicul de forum nu a fost schimbat.