Pagini recente » Cod sursa (job #1394394) | Cod sursa (job #185707) | Cod sursa (job #710595) | Cod sursa (job #1345220) | Cod sursa (job #419381)
Cod sursa(job #419381)
#include<iostream.h>
#include<fstream.h>
int b_search(int a,int b,int c,int v[]){
int m=(a+b)/2;
if(c==v[m])return m;
if(c<v[m])return b_search(a,m-1,c,v);
if(c>v[m])return b_search(m+1,b,c,v);}
int main(){
int n,v[100000],m,t,c,pos;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
f>>n;
for(int i=0;i<n;i++)f>>v[i];
f>>m;
while(f>>t){
f>>c;
pos=b_search(0,n-1,c,v);
if(t==0){if(v[pos]!=c)g<<"-1"<<endl;
else{
while(v[pos+1]==v[pos])pos++;
g<<pos+1<<endl;}}
if(t==1){
while(v[pos+1]==v[pos])pos++;
g<<pos+1<<endl;}
if(t==2){
while(v[pos-1]==v[pos])pos--;
g<<pos+1<<endl;}
}
f.close();g.close();
return 0;}