Pagini recente » Cod sursa (job #3289939) | Cod sursa (job #256925) | Cod sursa (job #1044852) | Cod sursa (job #2138873) | Cod sursa (job #368751)
Cod sursa(job #368751)
#include <cstdio>
using namespace std;
int n,a[100001];
inline int f0(int x){
int st=1,dr=n,rez = -1,m;
while(st<=dr){
m = st+(dr-st)/2;
if(a[m]<x)
st = m+1;
else
if( a[m] > x)
dr= m-1;
else
return m;
}
return rez;
}
inline int f1(int x){
int st=1,dr=n,rez,m;
while(st<=dr){
m = st+(dr-st)/2;
if(a[m]<=x)
rez = m, st= m+1;
else
dr = m-1;
}
return rez;
}
inline int f2(int x){
int st=1,dr=n, rez , m;
while(st<=dr){
m =st+(dr-st)/2;
if(a[m]>=x)
rez = m , dr = m-1;
else
st = m+1;
}
return rez;
}
int main(){
FILE * fin=fopen("cautbin.in","r");
fscanf(fin,"%d",&n);
for(int i=1;i<=n;i++)
fscanf(fin,"%d",a+i);
int m;
fscanf(fin,"%d", &m);
FILE * fout= fopen("cautbin.out","w");
for( ; m ; --m){
int c,x;
fscanf(fin, "%d%d", &c, &x);
switch(c){
case 0:fprintf(fout,"%d\n",f0(x));break;
case 1:fprintf(fout,"%d\n",f1(x));break;
case 2:fprintf(fout,"%d\n",f2(x));break;
}
}
return 0;
}