Pagini recente » Cod sursa (job #1609728) | Cod sursa (job #2396970) | Cod sursa (job #13813) | Cod sursa (job #1163774) | Cod sursa (job #2565454)
#include <fstream>
#define dim 100010
using namespace std;
int a[dim];
int i,n,m,q,x;
int st,dr,mid;
int main() {
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
fin>>n;
for (i=1;i<=n;i++) {
fin>>a[i];
}
fin>>m;
while (m--) {
fin>>q>>x;
st=1;
dr=n;
if (q==0) {///ultimul element egal cu x sau -1 daca nu exista x
while (st<=dr) {
mid=(st+dr)/2;
if (a[mid]<=x) st=mid+1;
else dr=mid-1;
}
///rezultatul se afla in dr
if (a[dr]==x) fout<<dr<<"\n";
else fout<<-1<<"\n";
}
else if (q==1) {///ultimul element mai mic sau egal cu x
while (st<=dr) {
mid=(st+dr)/2;
if (a[mid]<=x) st=mid+1;
else dr=mid-1;
}
///rezultatul se afla in dr
fout<<dr<<"\n";
}
else if (q==2) {///primul element mai mare sau egal cu x
while (st<=dr) {
mid=(st+dr)/2;
if (a[mid]>=x) dr=mid-1;
else st=mid+1;
}
///rezultatul se afla in st
fout<<st<<"\n";
}
}
return 0;
}