Witam,
nie mogę sobie poradzić z zadankiem http://pl.spoj.com/WSDOCPP/problems/PBINARY/. Dopiero zaczynam przygodę z algorytmiką, ale nie mogę sobie poradzić z whilem. Dodałem trochę kodu, żeby wypisywało powtórzenia i wyrzuca mi dla l = 0 i tak i nie.
Poniżej załączam kod:
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int n;
scanf("%d", &n);
int tab[n];
for (int i = 0; i < n; i++) {
cin >> tab[i];
}
int q;
scanf("%d", &q);
int tab2[q];
for (int j = 0; j < q; j++) {
cin >> tab2[j];
}
int p = 0;
int k = n - 1;
int sr;
for (int l = 0; l < q; l++) {
while (p <= k) {
sr = (k + p) / 2;
if (tab2[l] < tab[sr]) {
k = sr - 1;
}
else if (tab2[l] > tab[sr]) {
p = sr + 1;
}
else {
cout << "TAK" << endl;
cout << "Powtórzenie nr: " << l << endl;
break;
}
}
cout << "NIE" << endl;
cout << "Powtórzenie nr: " << l << endl;
}
}