Pagini recente » Cod sursa (job #149129) | Cod sursa (job #717629) | Cod sursa (job #9607) | Cod sursa (job #1919547) | Cod sursa (job #1526465)
#include <iostream>
#include <fstream>
using namespace std;
#define nmax 100002
int v[nmax] ,n ;
int cautareBinara( int val) {
int el = 0,ve = n-1, mid;
while (el+1 <= ve ) {
mid = (el + ve) / 2;
if (v[mid] == val) return mid;
else if (v[mid] < val) el = mid;
else ve = mid;
}
return mid;
}
int main()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
int m ;
scanf("%d",&n);
for ( int i = 0; i<n; i++ ) {
scanf("%d",&v[i]);
}
scanf("%d",&m);
int a,b;
for ( int intrebari = 0; intrebari<m; intrebari++ ) {
scanf("%d %d",&a, &b);
int x = cautareBinara(b);
if (a==0) {
while (v[x] == b && x < n) x++;
printf("%d\n",v[x-1]==b ? x :-1);
}
else if (a==1) {
while (v[x] > b && x > 0) x--;
while (v[x] <= b && x < n) x++;
printf("%d\n",x);
}
else {
while (v[x] < b && x < n) x++;
while (v[x] >= b && x > 0) x--;
printf("%d\n",x+2);
}
}
fclose(stdin);
fclose(stdout);
return 0;
}