Pagini recente » Cod sursa (job #378077) | Cod sursa (job #2113552) | Cod sursa (job #1278340) | Cod sursa (job #1281716) | Cod sursa (job #2210784)
#include <iostream>
#include <fstream>
using namespace std;
//Se dă un vector x cu n elemente numere naturale, ordonate crescător,
//și un vector y cu m elemente, de asemenea numere naturale. Verificați pentru fiecare element al vectorului y dacă apare în x
int a[100001];
int cautarebinara (int val, int n){
int pos=0;
for(int bit=20;bit>=0;bit--)
if((pos +(1 <<bit) <=n) and (a[pos +(1<<bit)] <= val))
pos+=(1 << bit);
return pos;
}
int main()
{
int tip,N,M,x;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
f>>N;
for(int i=1;i<=N;i++)
f>>a[i];
f>>M;
for(int i=1;i<=M;i++){
f>>tip>>x;
if(tip==0){
int poz;
poz=cautarebinara(x,N);
if(a[poz]==x)
g<<poz<<endl;
else
g<<"-1"<<endl;
}
if(tip==1){
g<<cautarebinara(x,N)<<endl;
}
if(tip==2){
g<<cautarebinara(x-1,N)+1<<endl;
}
}
f.close();
return 0;