Pagini recente » Cod sursa (job #1404519) | Cod sursa (job #3225912) | Cod sursa (job #2201816) | Cod sursa (job #1109303) | Cod sursa (job #2638150)
#include <bits/stdc++.h>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int a[25001],b[200001],t,n,i,j,x,y,m,c;
int cautare(int st, int dr)
{
int poz=0;
while(st<=dr)
{
int mij=(st+dr)/2;
if(a[mij]==x)
{
poz=mij;
st=mij+1;
}
else
{
if(a[mij]>x)
dr=mij-1;
else st=mij+1;
}
}
if(poz!=0) return poz;
else return -1;
}
int cautare_st( int st, int dr)
{
while(st<=dr)
{
int mij=(st+dr)/2;
if(a[mij]>=x)
dr=mij-1;
else st=mij+1;
}
return st;
}
int cautare_dr(int st, int dr)
{
while(st<=dr)
{
int mij=(st+dr)/2;
if(a[mij]<=x)
st=mij+1;
else dr=mij-1;
}
return dr;
}
int main()
{
f>>n;
for(i=1; i<=n; i++)
f>>a[i];
f>>m;
for(i=1;i<=m;i++)
{
f>>c>>x;
if(c==0) g<<cautare(1,n)<<'\n';
if(c==1) g<<cautare_dr(1,n)<<'\n';
if(c==2) g<<cautare_st(1,n)<<'\n';
}
return 0;
}