Pagini recente » Solutii FMI No Stress 3 | Cod sursa (job #462892) | Cod sursa (job #1568612) | Cod sursa (job #3150213) | Cod sursa (job #455928)
Cod sursa(job #455928)
#include<fstream.h>
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int intreb,caut,a[100010],n,i,m;
int c0(int nr,int in,int sf){
int m,poz=0;
while(in<=sf){
m=(in+sf)/2;
if(a[m]<nr) in=m+1;
else
if(a[m]>nr) sf=m-1;
else{
poz=m;
in=m+1;
}
}
if(poz) return poz;
return -1;
}
int c1(int nr,int in,int sf){
int m,poz=0;
while(in<=sf){
m=(in+sf)/2;
if(a[m]<=nr){
poz=m;
in=m+1;
}
else sf=m-1;
}
if(poz) return poz;
return -1;
}
int c2(int nr,int in,int sf){
int m,poz=0;
while(in<=sf){
m=(in+sf)/2;
if(a[m]>=nr){
poz=m;
sf=m-1;
}
else in=m+1;
}
if(poz) return poz;
return -1;
}
int main(){
f>>n;
for(i=1;i<=n;++i) f>>a[i];
f>>m;
for(i=1;i<=m;++i){
f>>intreb>>caut;
if(intreb==0)
g<<c0(caut,1,n)<<'\n';
else
if(intreb==1)
g<<c1(caut,1,n)<<'\n';
else
if(intreb==2)
g<<c2(caut,1,n)<<'\n';
}
g.close();
return 0;
}