Pagini recente » Cod sursa (job #1329016) | Cod sursa (job #1238345) | Cod sursa (job #2723973) | Cod sursa (job #2946442) | Cod sursa (job #2949800)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
vector <int> v;
int cautare0(int y)
{
int st=0,dr=v.size()-1,ok=0,mij;
while(st<=dr)
{
mij=(st+dr)/2;
if(v[mij]==y && v[mij+1]!=y)
{
ok=1;
break;
}
else
if(y>=v[mij])
st=mij+1;
else
dr=mij-1;
}
if(ok==1)
return mij+1;
else
return -1;
}
int cautare1(int y)
{
int st=0,dr=v.size()-1,ok=0,mij;
while(st<=dr)
{
mij=(st+dr)/2;
if(v[mij]<=y && v[mij+1]>y)
{
ok=1;
break;
}
else
if(y>=v[mij])
st=mij+1;
else
dr=mij-1;
}
return mij+1;
}
int cautare2(int y)
{
int st=0,dr=v.size()-1,ok=0,mij;
while(st<=dr)
{
mij=(st+dr)/2;
if(v[mij]>=y && v[mij+1]<=y && v[mij-1]!=y)
{
ok=1;
break;
}
else
if(y<=v[mij])
dr=mij-1;
else
st=mij+1;
}
return mij+1;
}
int main()
{
int n,i,x,y,m;
fin>>n;
for(i=1;i<=n;i++)
{
fin>>x;
v.push_back(x);
}
fin>>m;
for(i=1;i<=m;i++)
{
fin>>x>>y;
if(x==0)
fout<<cautare0(y)<<'\n';
if(x==1)
fout<<cautare1(y)<<'\n';
if(x==2)
fout<<cautare2(y)<<'\n';
}
return 0;
}