Pagini recente » Cod sursa (job #1669873) | Cod sursa (job #157677) | Cod sursa (job #1961417) | Cod sursa (job #2981398) | Cod sursa (job #232133)
Cod sursa(job #232133)
#include<fstream>
using namespace std;
long int v[100000],n,m,i,k;
int x;
ifstream f ("cautbin.in");
ofstream g ("cautbin.out");
long int bin_s_0(int x)
{
int lo, hi, mid;
for(lo=1,hi=n;lo<=hi;)
{
mid = lo + (hi-lo) / 2;
if(x<v[mid])hi=mid-1;
else if(v[mid]<x)lo=mid+1;
else return mid;
}
return -1;
}
long int bin_s_1(int x)
{
int lo, hi, mid, fin=0;
for(lo=1,hi=n;lo<=hi;)
{
mid=lo+(hi-lo)/2;
if(v[mid]<=x)fin=mid, lo=mid+1;
else hi= mid-1;
}
return fin;
}
long int bin_s_2(int x)
{
int lo, hi, mid, fin=n+1;
for(lo=1,hi=n;lo<=hi;)
{
mid=lo+(hi-lo)/2;
if(x<=v[mid])fin=mid, hi=mid-1;
else lo= mid+1;
}
return fin;
}
int main()
{
f>>n;
for(i=1;i<=n;i++) f>>v[i];
f>>m;
for(i=1;i<=m;i++)
{
f>>x>>k;
if(x==0) g<<bin_s_0(k)<<"\n";
else if(x==1) g<<bin_s_1(k)<<"\n";
else g<<bin_s_2(k)<<"\n";
}
f.close();
g.close();
}