Pagini recente » Cod sursa (job #1097884) | Cod sursa (job #1727802) | Cod sursa (job #607426) | Cod sursa (job #1149004) | Cod sursa (job #2073112)
#include <iostream>
#include <fstream>
using namespace std;
int n,v[100001];
int cautare0(int x)
{
int r=0, pas=1<<16;
while(pas!=0)
{
if(r+pas<=n && v[r+pas]<=x)
{
r+=pas;
}
pas/=2; // pas>>=1;
}
if(v[r]==x) return r;
return -1;
}
int cautare1(int x)
{
int r=0, pas=1<<16;
while(pas!=0)
{
if(r+pas<=n && v[r+pas]<=x)
{
r+=pas;
}
pas/=2;// pas>>=1;
}
return r;
}
int cautare2 ( int x )
{
int pas=1<<16;
int r=0;
while(pas!=0)
{
if(r+pas<=n&&v[r+pas]<x)
{
r+=pas;
}
pas/=2;
}
return r+1;
}
int main()
{
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int m,x,q,tip;
fin>>n;
for( int i=1; i<=n; i++)
fin>>v[i];
fin>>m;
while(m!=0)
{
fin >> tip >> x;
if (tip == 0)
{
fout << cautare0(x);
}
if (tip == 1)
{
fout <<cautare1(x);
}
if (tip == 2)
{
fout << cautare2(x);
}
fout << "\n";
}
return 0;
}