Pagini recente » Cod sursa (job #1986541) | Cod sursa (job #1046054) | Cod sursa (job #1279505) | Cod sursa (job #3140941) | Cod sursa (job #1128495)
#include <iostream>
#include <fstream>
using namespace std;
int n,t,k,x,v[100005];
int caut0(int x)
{
int st=1;
int dr=n;
int mij=(dr+st)/2;
int sol=-1;
while(st<=dr)
{
if(v[mij]==x){sol=mij;st=mij+1;}if(v[mij]<x)dr=mij-1;else st=mij+1;
mij=(st+dr)/2;
}
return sol;
}
int caut1(int x)
{
int st=1;
int dr=n;
int mij=(st+dr)/2;
int sol=-1;;
while(st<=dr)
{
if(v[mij]<=x){sol=mij;st=mij+1;}
else dr=mij-1;
mij=(st+dr)/2;
}
return sol;
}
int caut2(int x)
{
int st=1;
int dr=n;
int sol=-1;
int mij=(st+dr)/2;
while(st<=dr)
{
if(v[mij]>=x){sol=mij;dr=mij-1;}
else st=mij+1;
mij=(st+dr)/2;
}
return sol;
}
int main()
{
ifstream f("cautbin.in");
ofstream g("cautbin.out");
f>>n;
for(int i=1; i<=n; i++)
f>>v[i];
f>>t;
for(int i=1; i<=t; i++)
{
f>>k>>x;
if(k==0)g<<caut0(x)<<"\n";
if(k==1)g<<caut1(x)<<"\n";
if(k==2)g<<caut2(x)<<"\n";
}
return 0;
}