Pagini recente » Cod sursa (job #158159) | Cod sursa (job #935157) | Cod sursa (job #2126052) | Cod sursa (job #336211) | Cod sursa (job #2054030)
#include<fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream o("cautbin.out");
int n, M[100000], m, mod, val;
void citire(){
f>>n;
for(int i=0;i<n;i++){
f>>M[i];
}
f>>m;
}
int case_0(int x){
int s=1, d=n, m, pos=-1;
do{
m=int(s+d)/2;
if(M[m]==x){
pos=m;
} else {
if(val>M[m]){
s=m+1;
} else {
d=m-1;
}
}
} while(s>d);
return pos+1;
}
int case_1(int x){
int s=1, d=n, m, pos=-1;
do{
m=int(s+d)/2;
if(M[m]<=val){
pos=m;
} else {
if(val>M[m]){
s=m+1;
} else {
d=m-1;
}
}
} while(s>d);
return pos+1;
}
int case_2(int x){
int pos=-1;
for(int i=0;i<n;i++){
if(M[i]>=x){
pos=i;
break;
}
}
return pos+1;
}
int main(){
citire();
for(int i=0;i<m;i++){
f>>mod;
f>>val;
if(mod==0){
o<<case_0(val);
o<<"\n";
} else {
if(mod==1){
o<<case_1(val);
o<<"\n";
} else {
o<<case_2(val);
}
}
}
}