Pagini recente » Rating Daniel Constantin (medny) | Cod sursa (job #1989397) | Cod sursa (job #2595585) | Cod sursa (job #2589683) | Cod sursa (job #2241660)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("cautbin.in");
ofstream g ("cautbin.out");
int n,m;
int a[100005];
void cautbin0(int x)
{
int st=1,dr=n,mid;
while(st<=dr)
{
mid=(st+dr)/2;
if(a[mid]<=x)st=mid+1;
else dr=mid-1;
}
mid=(st+dr)/2;
if(a[mid]!=x)mid--;
if(a[mid]!=x)g<<"-1"<<"\n";
else g<<mid<<"\n";
}
void cautbin1(int x)
{
int st=1,dr=n, mid;
while(st<=dr)
{
mid=(st+dr)/2;
if(a[mid]<=x)st=mid+1;
else dr=mid-1;
}
mid=(st+dr)/2;
if(a[mid]>x)mid--;
g<<mid<<"\n";
}
void cautbin2(int x)
{
int st=1,dr=n,mid;
while (st<=dr)
{
mid=(st+dr)/2;
if(a[mid]>=x)dr=mid-1;
else st=mid+1;
}
mid=(st+dr)/2;
if(a[mid]<x)mid++;
g<<mid<<"\n";
}
int main()
{
int i,c;
int nr;
f>>n;
for(i=1;i<=n;i++)
{
f>>a[i];
}
f>>m;
for(i=1;i<=m;i++)
{
f>> c >> nr;
if(c==0)cautbin0(nr);
if(c==1)cautbin1(nr);
if(c==2)cautbin2(nr);
}
return 0;
}