Pagini recente » Istoria paginii utilizator/ottototto | Istoria paginii utilizator/georgestrey | Istoria paginii utilizator/oanna | Cod sursa (job #1086476) | Cod sursa (job #2073072)
#include <iostream>
#include <fstream>
using namespace std;
const int N=100001;
int v[N],n;
int caut0 ( int x )
{
long long pas=1<<12;
int r=0;
while(pas!=0)
{
if(r+pas<=n&&v[r+pas]<=x)
{
r+=pas;
}
pas/=2;
}
if(v[r]!=x) return -1;
return r;
}
int caut1 ( int x )
{
long long pas=1<<12;
int r=0;
while(pas!=0)
{
if(r+pas<=n&&v[r+pas]<=x)
{
r+=pas;
}
pas/=2;
}
return r;
}
int caut2 ( int x )
{
long long pas=1<<12;
int r=0;
while(pas!=0)
{
if(r+pas<=n&&v[r+pas]<x)
{
r+=pas;
}
pas/=2;
}
return r+1;
}
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
int main()
{
int m, q, x;
fin>>n;
for( int i=1; i<=n; i++)
fin>>v[i];
fin>>m;
while(m!=0)
{
fin>>q>>x;
if(q==0) fout<<caut0(x);
if(q==1) fout<<caut1(x);
if(q==2) fout<<caut2(x);
fout<<endl;
m--;
}
return 0;
}