Pagini recente » Cod sursa (job #964197) | Cod sursa (job #1368456) | Cod sursa (job #2233190) | Cod sursa (job #44227) | Cod sursa (job #2090861)
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
const int t=16;
int n, v[100001];
int caut0( int v[], int n, int x)
{
int ok=1<<t;
int r=0;
while(ok!=0)
{
if(r+ok<=n && v[r+ok]<=x)
r+=ok;
ok/=2;
}
if (v[r]!=x) r=-1;
return r;
}
int caut1( int v[], int n, int x)
{
int ok=1<<t;
int r=0;
while(ok!=0)
{
if(r+ok<=n && v[r+ok]<=x)
r+=ok;
ok/=2;
}
return r;
}
int caut2( int v[], int n, int x)
{
int ok=1<<t;
int r=0;
while(ok!=0)
{
if(r+ok<=n && v[r+ok]<x)
r+=ok;
ok/=2;
}
return r+1;
}
int main()
{
int n,m,p,x;
in>>n;
for(int i=1; i<=n; ++i)
{
in>>v[i];
}
in>>m;
for(int i=1; i<=m; ++i)
{
in>>p>>x;
if(p==0) out<<caut0(v,n,x)<<"\n";
if(p==1) out<<caut1(v,n,x)<<"\n";
if(p==2) out<<caut2(v,n,x)<<"\n";
}
return 0;
}