Pagini recente » Cod sursa (job #1943858) | Cod sursa (job #2620400) | Cod sursa (job #2302351) | Cod sursa (job #1860785) | Cod sursa (job #1021950)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("cautbin.in");
ofstream g ("cautbin.out");
long n;
int x;
int v[100001];
long caut_bin1 (long n, int x, int *v)
{
long left,mid,right;
left=1;right=n;
long rez=-1;
while (left<=right)
{
mid=(left+right)/2;
if(v[mid]==x)
{
rez=mid;
left=mid+1;
}
else
if(v[mid]<x)
left=mid+1;
else
right=mid-1;
}
return rez;
}
long caut_bin2 (long n, int x, int *v)
{
long left, mid,right;
left=1; right=n;
long rez=0;
while(left<=right)
{
mid=(left+right)/2;
if(v[mid]>x)
right=mid-1;
else
{
rez=mid;
left=mid+1;
}
}
return rez;
}
long caut_bin3(long n, int x, int *v)
{
long left, mid, right;
left=1; right=n;
long rez=0;
while(left<=right)
{
mid=(left+right)/2;
if (v[mid]>=x)
{
rez=mid;
right=mid-1;
}
else
if(v[mid]>x)
left=mid+1;
}
return rez;
}
int main()
{
long i,m;
int c;
f>>n;
for (i=1;i<=n;i++)
f>>v[i];
f>>m;
for(i=1;i<=m;i++)
{
f>>c>>x;
if (c==0)
g<<caut_bin1(n,x,v)<<endl;
else
if(c==1)
g<<caut_bin2(n,x,v)<<endl;
else
if(c==2)
g<<caut_bin3(n,x,v)<<endl;
}
f.close();g.close();
return 0;
}