Pagini recente » Cod sursa (job #2747831) | Cod sursa (job #247104) | Istoria paginii runda/bac-calinush/clasament | Cod sursa (job #3194438) | Cod sursa (job #2427836)
#include <iostream>
#include<math.h>
#include<fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int v[10000],poz;
int caut(int n,int x)
{
poz=0;
int msk=pow(2,20);
for(msk=pow(2,20);msk>0;msk=msk/2)
{
if(poz+msk<=n && v[poz+msk]<=x)poz=poz+msk;
}
if(v[poz]==x)return poz;
else return -1;
}
int main()
{
int n,m,x,i,c,p;
in>>n;
for(i=1;i<=n;i++)
{
in>>v[i];
}
in>>m;
for(i=1;i<=m;i++)
{
in>>c>>x;
if(c==0)
{
p=caut(n,x);
if(v[p]==x)out<<p<<'\n';
else out<<"-1"<<'\n';
}
if(c==1)
{
p=caut(n,x);
out<<p<<'\n';
}
if(c==2)
{
p=caut(n,x-1);
if(p==-1)p=poz;
out<<p+1<<'\n';
}
}
return 0;
}