Pagini recente » Cod sursa (job #2765192) | Cod sursa (job #2723974) | Cod sursa (job #1118514) | Cod sursa (job #704799) | Cod sursa (job #2860744)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n,m,a,b,v[100010];
int caut0(int st,int dr,int x){
int mij;
while(st<=dr){
mij=(st+dr)/2;
if(v[mij]<=x)
st=mij+1;
else
dr=mij-1;
}
mij=(st+dr)/2;
if(v[mij]>x) mij--;
if(v[mij]==x)
return mij;
return -1;
}
int caut1(int st,int dr,int x){
int mij,n=dr;
while(st<dr){
mij=(st+dr)/2;
if(v[mij]<=x)
st=mij+1;
else
dr=mij;
}
mij=(st+dr)/2;
if(v[mij]>x) mij--;
return mij;
}
int caut2(int st,int dr,int x){
int mij;
while(st<dr){
mij=(st+dr)/2;
if(v[mij]<x)
st=mij+1;
else
dr=mij;
}
mij=(st+dr)/2;
if(v[mij]<x) mij++;
return mij;
}
int main()
{
f>>n;
for(int i=1;i<=n;i++)
f>>v[i];
f>>m;
while(m--){
f>>a>>b;
if(a==0)
g<<caut0(1,n,b)<<'\n';
if(a==1)
g<<caut1(1,n,b)<<'\n';
if(a==2)
g<<caut2(1,n,b)<<'\n';
}
return 0;
}