Pagini recente » Cod sursa (job #465681) | Cod sursa (job #3253723) | Cod sursa (job #1968410) | Cod sursa (job #1071399) | Cod sursa (job #419392)
Cod sursa(job #419392)
#include<iostream.h>
#include<fstream.h>
#include<stdlib.h>
int comp(const void*a,const void*b){
return (*(int*)a-*(int*)b);}
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];
qsort(v,n,sizeof(int),comp);
f>>m;
for(int i=0;i<m;i++){
f>>t>>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++;}
if(t==1)while(v[pos+1]==v[pos])pos++;
if(t==2)while(v[pos-1]==v[pos])pos--;
g<<pos+1<<endl;
}
f.close();g.close();
return 0;}