Cod sursa(job #1424817)
Utilizator | Data | 25 aprilie 2015 15:44:56 | |
---|---|---|---|
Problema | Cautare binara | Scor | 60 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.04 kb |
#include <fstream>
using namespace std;
int v[100002];
int main()
{
ifstream f ("cautbin.in");
ofstream g ("cautbin.out");
int i,pas,n,j,k,m,nr,l=1,x;
f>>n;
for(i=0; i<n; i++){
f>>v[i];
}
f>>x;
while(l<=n)
l*=2;
pas=l;
for(i=0; i<x; i++){
pas=l;
f>>m;
f>>nr;
j=0;
if(m==0){
while(pas!=0){
if(j+pas<n && v[j+pas]<=nr && v[j+pas])
j+=pas;
pas>>=1;
}
if(v[j]!=nr)
j=-1;
else
j++;
}
else if(m==1){
while(pas!=0){
if(j+pas<n && v[j+pas]<=nr && v[j+pas])
j+=pas;
pas>>=1;
}
j++;
}
else if(m==2){
while(pas!=0){
if(j+pas<=n && v[j+pas]<nr && v[j+pas])
j+=pas;
pas>>=1;
}
j+=2;
}
g<<j<<"\n";
}
return 0;
}