Pagini recente » Diferente pentru 2-sat intre reviziile 4 si 3 | Istoria paginii runda/ez_problems | Istoria paginii utilizator/alin29 | Diferente pentru utilizator/shantih1 intre reviziile 2 si 1 | Cod sursa (job #2051258)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
long long v[100001];
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int cautbin1(int l,int r,int x)
{
if(l==r)
return l;
int mid=(l+r+1)/2;
if(x<v[mid])
return cautbin1(l,mid-1,x);
else
return cautbin1(mid,r,x);
}
int cautbin2(int l,int r,int x)
{
if(l==r)
return l;
int mid=(l+r)/2;
if(x<=v[mid])
return cautbin2(l,mid,x);
else
return cautbin2(mid+1,r,x);
}
int main()
{
long long n,i,k,m;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>v[i];
}
cin>>m;
short a;
int poz;
for(i=1;i<=m;i++)
{
cin>>a>>k;
if(a==0)
{
poz=cautbin1(1,n,k);
if(v[poz]!=k)
cout<<"-1";
else
cout<<poz;
}
if(a==1)
{
poz=cautbin1(1,n,k);
cout<<poz;
}
if(a==2)
{
poz=cautbin2(1,n,k);
cout<<poz;
}
cout<<"\n";
}
return 0;
}