Pagini recente » Cod sursa (job #1694899) | Cod sursa (job #710847) | Cod sursa (job #2277483) | Cod sursa (job #1351730) | Cod sursa (job #361198)
Cod sursa(job #361198)
#include <stdio.h>
#define nmax 100005
FILE*f=fopen("cautbin.in","r");
FILE*g=fopen("cautbin.out","w");
int i,j,v[nmax],st,dr,n,m,tip,nr,sol,mid;
void citire(){
fscanf(f,"%d ",&n);
for(i=1;i<=n;i++){
fscanf(f,"%d ",&v[i]);
}
fscanf(f,"%d",&m);
}
void tip0(){
sol=-1;
st=1;
dr=n;
while(st<=dr){
mid=(st+dr)/2;
if(v[mid]<=nr){
st=mid+1;
if(v[mid]==nr){
sol=mid;
}
}else{
dr=mid-1;
}
}
fprintf(g,"%d\n",sol);
}
void tip1(){
st=1;
dr=n;
while(st<=dr){
mid=(st+dr)/2;
if(v[mid]<=nr){
st=mid+1;
sol=mid;
}else {
dr=mid-1;
}
}
fprintf(g,"%d\n",sol);
}
void tip2(){
st=1;
dr=n;
while(st<=dr){
mid=(st+dr)/2;
if(v[mid]>=nr){
sol=mid;
dr=mid-1;
}else {
st=mid+1;
}
}
fprintf(g,"%d\n",sol);
}
int main(){
citire();
for(i=0;i<m;i++){
fscanf(f,"%d %d",&tip,&nr);
if(tip==0){
tip0();
}else if(tip==1){
tip1();
}else if(tip==2){
tip2();
}
}
fclose(f);
fclose(g);
return 0;
}