Pagini recente » Cod sursa (job #625055) | Cod sursa (job #615867) | Cod sursa (job #1527313) | Cod sursa (job #1765206) | Cod sursa (job #1662943)
#include <iostream>
#include<fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int s,d,x,v[100005],n,t,i,nr,c;
int bs0(int s,int d,int x)
{
int m;
while(s<=d)
{
m=s+(d-s)/2;
if(v[m]==x)
{if(m==d) return m;
else {if(v[m+1]>x) return m;
else s = m + 1;}}
else
{if(v[m]<x) s = m + 1;
else d = m - 1;}
}
return -1;
}
int bs1(int s,int d,int x)
{
int m;
while(s<=d)
{
m=s+(d-s)/2;
if(v[m]<=x)
{
if(m==d) return m;
else {
if(v[m+1]>x) return m;
else s = m + 1;
}
}
else d = m - 1;
}
}
int bs2(int s,int d,int x)
{
int m;
while(s<=d)
{
m=s+(d-s)/2;
if(v[m]>=x)
{if(m==s) return m;
else {
if(v[m-1]<x) return m;
else d = m - 1;
}}
else s = m + 1;
}
}
int main()
{
f>>n;
for(i=1;i<=n;i++)
f>>v[i];
f>>t;
for(i=1;i<=t;i++)
{
f>>c>>x;
if(c==0)
{
g<<bs0(1,n,x)<<"\n";
}
if(c==1)
{
g<<bs1(1,n,x)<<"\n";
}
if(c==2)
{
g<<bs2(1,n,x)<<"\n";
}
}
return 0;
}