Pagini recente » Cod sursa (job #3181737) | Cod sursa (job #315848) | Cod sursa (job #2174334) | Cod sursa (job #238050) | Cod sursa (job #2612469)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int cautare(unsigned v[],unsigned val,int st,int dr)
{
int m = (st+dr)/2;
if(val==v[m]||st>dr)
return m;
else if(val<v[m])
return cautare(v,val,st,m-1);
else
return cautare(v,val,m+1,dr);
}
int main()
{
int n,m;
in>>n;
unsigned v[n];
for(int i=0;i<n;i++)
in>>v[i];
in>>m;
for(int i=0;i<m;i++){
int x,a;
unsigned val;
in>>x;
in>>val;
a = cautare(v,val,0,n-1);
if(x==0)
if(v[a] == val){
while(v[a+1]==val)
a++;
out<<a+1<<'\n';
}
else
out<<-1<<'\n';
else if(x==1){
while(v[a-1]>val)
a--;
while(v[a+1]==val)
a++;
out<<a+1<<'\n';
}
else{
while(a+1<n&&v[a+1]<val)
a++;
while(v[a-1]==val)
a--;
out<<a+1<<'\n';
}
}
}