Pagini recente » Cod sursa (job #1960717) | Cod sursa (job #569032) | Cod sursa (job #2792369) | Cod sursa (job #1308812) | Cod sursa (job #456716)
Cod sursa(job #456716)
#include<fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
#define nmax 100002
int n,m,v[nmax];
void citire()
{
f>>n;int i;
for(i=1;i<=n;i++)f>>v[i];
f>>m;
}
int cautare0(int x)
{
int st=1,dr=n,mij;
while(st<dr)
{
mij=(st+dr)/2+1;
if(v[mij]<=x)
st=mij;
else
dr=mij-1;
}
if(v[st]==x) return st;
return -1;
}
int cautare1(int x)
{
int st=1,dr=n,mij;
while(st<dr)
{
mij=(st+dr)/2+1;
if(v[mij]<=x)
st=mij;
else dr=mij-1;
}
return st;
}
int cautare2(int x)
{
int st=0,dr=n,mij;
while(st<dr)
{
mij=(st+dr)/2;
if(v[mij]>=x)
dr=mij;
else st=mij+1;
}
return dr;
}
int main()
{
citire();
int a,x;
for(;m;--m)
{
f>>a>>x;
if(a==0) g<<cautare0(x)<<'\n';
if(a==1) g<<cautare1(x)<<'\n';
if(a==2) g<<cautare2(x)<<'\n';
}
}