Pagini recente » Cod sursa (job #1229156) | Cod sursa (job #2122238) | Cod sursa (job #2692466) | Cod sursa (job #1706842) | Cod sursa (job #973674)
Cod sursa(job #973674)
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n,v[100001],m;
int op1 (int x)
{
int lo=0,hi=n+1;
while (hi-lo > 1)
{
int mid = (lo+hi)/2;
if (x<v[mid]) hi=mid;
else lo=mid;
}
if (lo==0 || v[lo]!=x) return -1;
return lo;
}
int op2 (int x)
{
int lo=0,hi=n+1;
while (hi-lo > 1)
{
int mid = (lo+hi)/2;
if (x<v[mid]) hi=mid;
else lo=mid;
}
return lo;
}
int op3 (int x)
{
int lo=0,hi=n+1;
while (hi-lo > 1)
{
int mid = (lo+hi)/2;
if (x<=v[mid]) hi=mid;
else lo=mid;
}
return hi;
}
int main()
{
int op,x;
fin>>n;
for (int i=1;i<=n;i++) fin>>v[i];
fin>>m;
for (int i=1;i<=m;i++)
{
fin>>op>>x;
if (op==0) fout<<op1(x);
else if (op==1) fout<<op2(x);
else fout<<op3(x);
fout<<"\n";
}
}