Pagini recente » Cod sursa (job #2163969) | Cod sursa (job #1470098) | Cod sursa (job #1760672) | Diferente pentru propuneri/6-arhiva-educationala intre reviziile 10 si 11 | Cod sursa (job #1587892)
#include <fstream>
#include <iostream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int v[100000],n;
int caut0(int x)
{
int pas=1<<16,i=0;
while (pas!=0) {
if (i+pas<=n && v[i+pas]==x) i+=pas;
pas/=2;
}
if (i==0) return -1;
return i;
}
int caut1(int x)
{
int pas=1<<16,i=0;
while (pas!=0) {
if (i+pas<=n && v[i+pas]<=x) i+=pas;
pas/=2;
}
return i;
}
int caut2(int x)
{
int pas=1<<16,i=0;
while (pas!=0) {
if (i+pas<=n && v[i+pas]<x) i+=pas;
pas/=2;
}
return i+1;
}
int main()
{
long long m,nr,x;
fin>>n;
for (int i=1;i<=n;i++) fin>>v[i];
fin>>m;
for (int i=0;i<m;i++) {
fin>>nr>>x;
if (nr==0) fout<<caut0(x)<<'\n';
else if (nr==1) fout<<caut1(x)<<'\n';
else if (nr==2) fout<<caut2(x)<<'\n';
}
}