Pagini recente » Cod sursa (job #518179) | Cod sursa (job #3331984) | Cod sursa (job #2688986) | Cod sursa (job #1275086) | Cod sursa (job #1418009)
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int a[100001];
int binarysearch0(int low, int high, int x)
{
int middle;
while(low<=high)
{
middle=low+(high-low)/2;
if(x<a[middle]) high=middle-1;
if(x>a[middle]) low=middle+1;
if(x==a[middle]) return middle;
}
return -1;
}
int binarysearch1(int low, int high, int x)
{
int middle;
if(x>=high) return high+1;
while(low<high)
{
middle=low+(high-low)/2;
if(x>=a[middle])
low=middle+1;
else
high=middle;
}
middle=low+(high-low)/2;
if(a[middle]>x)
middle--;
return middle+1;
}
int binarysearch2(int low, int high, int x)
{
int middle;
while(low<high)
{
middle=low+(high-low)/2;
if(a[middle]<x)
low=middle+1;
else
high=middle;
}
middle=low+(high-low)/2;
if(a[middle]<x)
middle++;
return middle;
}
int main()
{
int n, i, m, type, x;
f>>n;
for(i=1; i<=n; i++)
f>>a[i];
f>>m;
while(m!=0)
{
f>>type>>x;
if(type==0) g<<binarysearch0(1, n, x)<<'\n';
if(type==1) g<<binarysearch1(1, n, x)<<'\n';
if(type==2) g<<binarysearch2(1, n, x)<<'\n';
m--;
}
return 0;
}